Samba a rychlost čtení

Samba a rychlost čtení
« kdy: 26. 02. 2025, 21:13:39 »
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:
Kód: [Vybrat]
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.


Re:Samba a rychlost čtení
« Odpověď #1 kdy: 26. 02. 2025, 22:00:03 »
Zjistil jsem, že v hostu (mimo docker) dd funguje rychle, ale uvnitř dockeru dd funguje pomalu. Když mu ale dám iflag=direct, tak funguje rychle i v dockeru.

Koukal jsem přes iostat a přes bkltrace, že rozdíl je v tom, že se na disk posílají požadavky na přečtení 4kB (když to jede pomalu) a 256kb (když to jede rychle). Je to vidět v iostat ve sloupce rareq-sz.