Příkaz nocache je obecnou odpovědí na tento problém! Podívejte se na https://github.com/Feh/nocache nebo jej najděte v Debianu a Ubuntu 13.10 (prohnané).
Díky, Petere, že jsi nás upozornil na volbu --drop-cache" v rsync. To však bylo odmítnuto upstream (chyba 9560 – volba drop-cache) ve prospěch obecnějšího řešení:nový příkaz "nocache" založené na práci rsync s fadvise.
"nocache" prostě připojíte k libovolnému příkazu, který chcete. Má také pěkné nástroje pro popis a úpravu stavu mezipaměti souborů. Např. zde jsou účinky s nocache a bez ní:
$ ./cachestats ~/file.mp3
pages in cache: 154/1945 (7.9%) [filesize=7776.2K, pagesize=4K]
$ ./nocache cp ~/file.mp3 /tmp
$ ./cachestats ~/file.mp3
pages in cache: 154/1945 (7.9%) [filesize=7776.2K, pagesize=4K]\
$ cp ~/file.mp3 /tmp
$ ./cachestats ~/file.mp3
pages in cache: 1945/1945 (100.0%) [filesize=7776.2K, pagesize=4K]
Doufejme tedy, že to bude fungovat pro další zálohovací programy (rsnapshot, duplicity, rdiff-backup, amanda, s3sync, s3ql, tar atd.) a další příkazy, které nechcete vyhazovat do koše.
Kristof Provost byl velmi blízko, ale v mé situaci jsem nechtěl používat dd ani psát svůj vlastní software, takže řešením bylo použít možnost "--drop-cache" v rsync.
Použil jsem to mnohokrát od vytvoření této otázky a zdá se, že problém zcela vyřešil. Jednou výjimkou bylo, když používám rsync ke kopírování ze stroje FreeBSD, který nepodporuje "--drop-cache". Napsal jsem tedy obal, který nahradí příkaz /usr/local/bin/rsync a odstraní tuto možnost, a nyní funguje kopírování i odtud.
Stále používá obrovské množství paměti pro vyrovnávací paměti a zdá se, že neuchovává téměř žádnou mezipaměť, ale stejně funguje hladce.
$ free
total used free shared buffers cached
Mem: 24731544 24531576 199968 0 15349680 850624
-/+ buffers/cache: 8331272 16400272
Swap: 4194300 602648 3591652
Jádro nemůže vědět, že data z mezipaměti z kopírování znovu nepoužijete. To je vaše informační výhoda.
Ale můžete nastavit swapiness na 0:sudo sysctl vm.swappiness=0. To způsobí, že linux zahodí mezipaměť před zapsáním knihoven atd. do swapu.
Funguje to dobře i pro mě, zvláště velmi výkonný v kombinaci s hugh ram (16-32 GB).