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については聞いたことはあるけど使ったことはない、
参加申請はこちらから。
