paccacheによるディスク使用量節約の効果
2021-04-11に書いたpaccache
によるパッケージキャッシュの整理における、
残すパッケージの世代数とディスク使用容量の削減量との関係を示しておく。
bash
上で、削除するパッケージ総数とそれらがHDDに占める総容量とを、残す世代数ごとに求め、
awk
でgnuplot
用に整形し、gnuplot
でグラフにしてPNG形式で出力した。
(i=0;until f=`paccache -d -k$i --nocolor|cut -d" " -f5,10,11`;[ "$f" = "found" ];do echo $((i++)) $f;done;echo $i 0 0 B)|awk '{$3/=$4=="MiB)"?1024:1;$4="";print;a=a$0"\n"}END{print "e\n"a}'|gnuplot -e "set term pngcairo;set output'foo.png';set xlabel'versions to keep';set ylabel t1='deletion candidates';set y2label(t2='disk space saved').'/GiB';set y2tics;set grid;plot'-'using 1:2title t1,''using 1:3axis x1y2 title t2;set terminal wxt 0;set output"
途中のawk
による整形で同じものを2回出力しているのは、gnuplot
に
plot '-' ..., '' ...
のように2回同じデータを渡すためである。
複製したデータの前に一つ目のデータの終了を示すeの行を出力している。
もし、awk
の出力をファイルに保存し、
そのファイルをgnuplot
で指定するのなら複製は不要である。
キャッシュされたパッケージが多く、多くの世代が含まれている場合、
paccache
の複数回の実行にそれなりに時間がかかるかもしれないので、
キャッシュされていない世代まで遡らず途中で打ち切るようにしてもよいかもしれない。
また、一気にパイプで繋がずに適宜区切っていった方が間違い対策やパラメタの試行錯誤がしやすいかもしれない。
作成した結果の画像foo.pngを以下に示す。
実際に行った削減では、既に述べたように10世代前のパッケージまで残して、約6 GiBのディスク容量を節約している。