Linux / gyors cache feltöltés

Egy szoftver demójához be szoktam tölteni előtte a mysql fájlokat a rendszer cache-be. Így nem gondolkodik semmin a demó közben.

Shellből szoktam megoldani, de észrevettem hogy Ruby-ból kétszer gyorsabb (sokszor futtatva marad az arány). Vajon a shell while ciklusa lassítana? Igazából mindegy. Ez SSD-n van és relative kicsi az adat. Más esetben jobban számíthat a különbség.

Root-ként futtatva az alábbiakat:


# cache törlés
echo 3 > /proc/sys/vm/drop_caches

time ruby -e 'Dir["/var/lib/mysql/**/**"].select{|f|File.file?(f)}.each{|f|File.read(f)}'

real    0m2.200s
user    0m0.076s
sys     0m0.420s

echo 3 > /proc/sys/vm/drop_caches

time find /var/lib/mysql ! -type d | while read FF; do cat "$FF" >/dev/null; done   

real    0m4.881s
user    0m0.452s
sys     0m0.496s

Hozzászólások

Ez érdekes! A válasz engem is érdekelne.

a while/read a bűnös

ez már jobb megoldás:


time find . -type f -exec cat {} >/dev/null \;

de fogadjunk, hogy ez lesz a legjobb:


time find . -type f -print0| xargs -0 cat  >/dev/null 

--
Live free, or I f'ing kill you.

Részemről jobban kedvelem a "! -type d" paraméterezést, mert így nem csak a normál fájlokat találja meg, hanem a symlink-eket is például, szemben a "-type f" megoldással.

sub
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 14.1 | 3.10.96-janos