W przypadku pewnego obciążenia odczytu / zapisu uzyskuję 30 MiB / s z 4-dyskowej tablicy przy użyciu mnożenia portów esata. Kiedy przenoszę dokładnie tę samą tablicę do czterech pojedynczych połączeń sata, otrzymuję 90 MiB / s dla tego samego obciążenia. Czy to oczekiwany wpływ mnożnika na wydajność? Jeśli nie, to jak zawęzić problem między oprogramowaniem, kontrolerem lub obudową?
Dokładnie takie same wyniki uzyskałem nawet po wypróbowaniu dużej liczby zmiennych przez lata:
- Wiele wersji systemu Linux (RHEL5, Fedora 9, 11, 13, 16) i wszystkie związane z nimi jądra.
- Dwa typy obudów (oba 4-dyskowe modele z niższej klasy 100 USD), łącznie cztery obudowy.
- Dwa typy układów scalonych kontrolera SATA (Marvell 88SE91xx i Silicon Image 3132)
- Cztery kontrolery SATA (około 30–60 USD karty interfejsu pci-x1 i jeden PCI, wszystkie przełączanie oparte na FIS).
- Trzy prędkości SATA (1,5, 3,0 i 6,0 Gb / s)
- Cztery rodzaje dysków twardych (Samsung Spinpoint F1 1 TB, WD Caviar Black 2 TB, Seagate Barracuda XT 3 TB).
- Trzy komputery (Athlon 3 GHz + 1 GB RAM, kiedy zrobiłem pierwszą macierz e-sata, następnie Core 2 Duo + 4 GB, teraz Core i5 750 + 8 GB).
Kiedy robiłem swoją pierwszą obudowę eSATA wszystkie lata temu, założyłem, że niska prędkość była związana z używaniem karty PCI (33 MHz), niedojrzałych sterowników SATA lub być może dysków SATA 1,5 Gb / s 5400 obr./min. Ale teraz z kontrolerem x1 6 Gb / s, jądrem 3.0 i dyskiem HDD o prędkości 6 Gb / s 7200 obr / min, nadal nic się nie zmieniło. Nadal dostaję te same 30 MiB / s dla tego konkretnego obciążenia, dopóki nie przeniosę go do poszczególnych połączeń SATA.
Czy jest to podstawowe ograniczenie wszystkich implementacji zwielokrotnienia portów?
źródło
Odpowiedzi:
Tak. Należy oczekiwać niskiej wydajności.
Protokół ATA nigdy nie miał przenosić danych na więcej niż jeden dysk (tak naprawdę był oparty na szynie ISA, rozszerzając kanał komunikacyjny na dysk pamięci). Interfejs IDE oszukał to ograniczenie, przenosząc dane dla urządzeń „Master” i „Slave”. SATA nie ma jednak równoważnego mechanizmu, ponieważ był przeznaczony tylko dla jednego urządzenia na połączenie kablowe.
Mnożniki portów eSATA działają jako cel ATA, który może wybrać wiele nośników fizycznych (więc jednocześnie można adresować tylko jedno urządzenie fizyczne, a przełączenie na inne urządzenie jest niewielkie). Można to porównać do starych bibliotek optycznych.
Różni się to radykalnie od SAS, który został zbudowany z wbudowanymi ekspanderami i routerem inicjującym / docelowym (SAS 2.0+ działa trochę jak przełączana sieć Ethernet). SAS może również łączyć wiele linii w pnie, umożliwiając jednoczesny dostęp do wielu urządzeń w wielu liniach.
Aktualizacja:
Najwyraźniej istnieją nowsze kontrolery, które obsługują FIS, co pozwala na jednoczesne „aktywowanie” wielu dysków. Powinno to pozwolić na wydajność znacznie wyższą niż opisano powyżej. Najwyraźniej w tej chwili produkuje je tylko jeden producent. Nadal bardzo poleciłbym zacząć od SATA w środowiskach serwerowych. Jeśli musisz użyć dysków SATA, rozważ korzystanie z kontrolerów i ekspanderów SAS.
źródło
Czy na pewno próbowałeś multiplikatora kontrolera i portu obsługującego zwielokrotnianie portów FIS (Frame Information Structure) ?
Obsługują to tylko kontrolery i multiplikatory obrazu krzemowego AFAIK (SiI3726), ale wydajność jest podobna do SAS o tej samej prędkości (nasycenie łącza 80-90%).
źródło