GNU/Linux >> Znalost Linux >  >> Linux

Existuje způsob, jak zlepšit výkon linuxových trubek?

Zkoušeli jste to s menšími bloky?

Když zkouším na své vlastní pracovní stanici, zaznamenávám postupné zlepšování při snižování velikosti bloku. V mém testu je to pouze v oblasti 10%, ale stále jde o zlepšení. Hledáte 100 %.

Jak se ukázalo při dalším testování, zdá se, že opravdu malé velikosti bloků dělají trik:

Zkusil jsem

dd if=/dev/zero bs=32k count=256000 | dd of=/dev/null bs=32k
256000+0 records in
256000+0 records out
256000+0 records in
256000+0 records out
8388608000 bytes (8.4 GB) copied8388608000 bytes (8.4 GB) copied, 1.67965 s, 5.0 GB/s
, 1.68052 s, 5.0 GB/s

A s vaším původním

dd if=/dev/zero bs=8M count=1000 | dd of=/dev/null bs=8M
1000+0 records in
1000+0 records out
1000+0 records in
1000+0 records out
8388608000 bytes (8.4 GB) copied8388608000 bytes (8.4 GB) copied, 6.25782 s, 1.3 GB/s
, 6.25203 s, 1.3 GB/s

5,0/1,3 =3,8, takže to je značný faktor.


Zdá se, že linuxové kanály poskytují čtenáři pouze 4096 bajtů najednou, bez ohledu na to, jak velké byly zápisy autora.

Takže pokus nacpat více než 4096 bajtů do již zaplněné roury na systémové volání write(2) způsobí, že se zapisovač zastaví, dokud čtenář nebude moci vyvolat vícenásobná čtení potřebná k vytažení takového množství dat z roury a provedení jakéhokoli zpracování. to má na mysli.

To mi říká, že na vícejádrových nebo vícevláknových CPU (vyrábí někdo stále jedno jádro, jedno vlákno, CPU?) lze získat větší paralelismus a tedy kratší dobu taktu tím, že každý zapisovač v potrubí zapíše pouze 4096 bajtů najednou, než se vrátí ke zpracování nebo produkci dat, které může udělat pro vytvoření dalšího bloku 4096.


Linux
  1. Existuje způsob, jak „uniq“ podle sloupce?

  2. Existuje způsob, jak zkontrolovat aktuální rpath v Linuxu?

  3. Existuje STDCALL v Linuxu?

  1. Existuje způsob, jak získat UID uživatele na počítači se systémem Linux pomocí javy?

  2. Existuje nějaký způsob, jak získat 64bitový time_t v 32bitových programech v Linuxu?

  3. Existuje protokol, který zaznamenává vypnutí v Linuxu?

  1. Existuje způsob, jak změnit barvy používané v konzolách TTY na Linuxu?

  2. dd výkon na Mac OS X vs. Linux

  3. Existuje způsob, jak získat správné CLOCK_TAI na Linuxu?