FreeBSD 10.
マルチスレッド対応xz(1)コマンド
xz(1)はデータ圧縮コマンドのひとつです。現在ではFreeBSDで用意する配布物はxz(1)で圧縮されるようになっています。それはxz(1)コマンドが類似のツールと比較して圧縮率が高く、
そのかわり、
マルチスレッド対応のxz(1)では-Tオプションで利用するスレッドの数を指定します。FreeBSD 10.
処理速度と消費メモリ
スレッド(論理コア)が4のマシンを使って処理速度と消費メモリを調べてみます。まず次のように圧縮の対象となるダミーのデータファイルを作成します。
% dd if=/dev/random of=data bs=1024x1024 count=1024 1024+0 records in 1024+0 records out 1073741824 bytes transferred in 16.157021 secs (66456671 bytes/sec) % ls -lh data -rw-r--r-- 1 daichi daichi 1.0G May 16 17:12 data %
次に、
% /usr/bin/time -lph xz data real 381.49 user 379.87 sys 1.51 97664 maximum resident set size 64 average shared memory size 24 average unshared data size 128 average unshared stack size 23884 page reclaims 0 page faults 0 swaps 10 block input operations 131079 block output operations 0 messages sent 0 messages received 0 signals received 2009 voluntary context switches 20185 involuntary context switches %
% /usr/bin/time -lph xz -T 2 data real 182.55 user 359.62 sys 1.35 340928 maximum resident set size 63 average shared memory size 23 average unshared data size 127 average unshared stack size 84572 page reclaims 0 page faults 0 swaps 6 block input operations 131079 block output operations 0 messages sent 0 messages received 0 signals received 673 voluntary context switches 26670 involuntary context switches %
% /usr/bin/time -lph xz -T 3 data real 126.49 user 368.35 sys 1.28 510176 maximum resident set size 64 average shared memory size 24 average unshared data size 128 average unshared stack size 126799 page reclaims 0 page faults 0 swaps 10 block input operations 131079 block output operations 0 messages sent 0 messages received 0 signals received 507 voluntary context switches 51176 involuntary context switches %
% /usr/bin/time -lph xz -T 4 data real 100.40 user 385.31 sys 1.62 679440 maximum resident set size 63 average shared memory size 23 average unshared data size 127 average unshared stack size 169026 page reclaims 0 page faults 0 swaps 1364 block input operations 131079 block output operations 0 messages sent 0 messages received 0 signals received 1263 voluntary context switches 60359 involuntary context switches %
% /usr/bin/time -lph xz -T 0 data real 99.84 user 385.33 sys 1.56 679440 maximum resident set size 63 average shared memory size 23 average unshared data size 127 average unshared stack size 169026 page reclaims 0 page faults 0 swaps 10 block input operations 131079 block output operations 0 messages sent 0 messages received 0 signals received 387 voluntary context switches 56429 involuntary context switches %
結果をグラフにまとめると次のようになります。


実行に利用したマシンは論理コアが4つですので、
スレッド数を増やすとその分実際の実行時間
将来的には展開時にもマルチスレッド対応
-T 0の挙動はいずれはデフォルトになるように思いますので、
xz(1)の特徴は高い圧縮率と高速な展開時間にあります。将来的にはこの展開に関してもマルチコア/スレッド対応機能が入るものとみられますので、
FreeBSD勉強会 告知
第52回 5月26日(木)19:00~ FreeBSD翻訳に貢献しよう!基本的なツールの使い方
ソースコードが読めないからドライバを書いたりカーネルを書き換えたりできないし、
FreeBSD Docチームは最近POの機能を取り込んだ翻訳システムを構築して活用しています。このシステムを導入する前に比べると自動化できる部分も増えましたし、
今回の勉強会では、
参加申請はこちらから。
第53回 6月22日(水) 19:00~ ZFSマスターベーシックス
ストレージシステムや仮想化システムのファイルシステムとしてデファクトスタンダードになりつつあるZFS。FreeBSDでネイティブに動作するファイルシステムで、
ZFSについては聞いたことはあるけど使ったことはない、
参加申請はこちらから。