Ahoj.
Mám tu Raspberry PI 4, na ní USB HDD (ze kterého bootuju), který podle hdparm -t je schopen číst cca 90MB/s (je to nějaký 2.5 palcový disk z notebooku).
Když zkusím číst přes:
dd if=file of=/dev/null bs=1M status=progress
, tak vidím také rychlost cca 90MB/s.
A teď o co mi jde. Mám v dockeru sambu. Když se na tuto sambu připojím z jiného PC (Windows), tak čtu cca 20MB/s (pro jistotu MB = megabajt - jsem připojený na GBit síťovce).
Když dám soubor na Windowsu číst znovu (a je v cachi na Raspberry), tak to chvíli jede 100MB/s (cca 4GB se takto rychle vyčtou) a pak to znovu klesne na cca 20MB/s.
Zkoušel jsem iostat -x 1 a je vidět, že util je na 100% (jak v případě dd, tak v případě samby). Využití CPU (htop) je malé.
Z toho usuzuji, že problém není v síti, ale ve čtení souboru.
Zkoušel jsem to breaknout v gdb a je vidět, že pro čtení souboru se volá funkce pread(), kde se v argumentu count předává hodnota 1048576 (=1MB).
Našel jsem hromadu tipů do konfigurace samby, ale jen jediný mi pomáhá - a to: "aio read size = 0", ale jen někdy (chvíli jedu těch 90MB/s, pak to na chvíli klesne třeba na 50 a pak zpět na 90 - je to ale podstatně lepší) a jen na tomto PC. Mám pak ještě jeden PC (Zotac ZBox BI320), kde mám chování stejné (disk přes hdparm/dd je schopen číst třeba 200MB/s, ale přes sambu je to pomalé).
Mám pak ještě Raspberry PI 5 a tam mi to jede bez problémů 100MB/s (je tam také externí HDD)
Nemáte s tím někdo zkušenosti?
Díky moc.