2014年06月08日(日) - 18:21 | カテゴリ:
Linux
2022年版として再計測してみました。
………
先日、自鯖のログ圧縮を行おうとキーボードを叩いていたのだが、
その時に『普通ならgzipだろうけどxzとか他はどうなんだろう…?』
と思ったので、実際にファイルを圧縮しつつ実行速度と圧縮率を測定してみた。
Linux(CentOS)のデフォルトlogrotateでcompressオプションを指定した場合はgzip圧縮になる。
オプションとかコマンドを再指定する事で、他の圧縮方法に切り替える事も可能だけど、
普通はそんな面倒な事やらないし、
『ログの圧縮と言ったらgzipだべ』という人が大半だと思われる。
そんな中での今回の検証だが、果たしてどの圧縮方法が鯖に優しいのだろうか(`・ω・´)
………
● 計測方法
- 検証は仮想環境上に”CentOS x86_64″を構築し実施。
- テキスト(ログ)504MBとバイナリ(CentOSのLiveCD)649MBに対して
各圧縮コマンド毎に3回ずつ圧縮処理を行い、
その中の最速処理時間の値を圧縮方法に対応する処理時間とする
- 圧縮率指定の出来るコマンドでは、[速度重視 / 指定無し / 最高圧縮率]の3種類の測定を行う
ただし、アーカイブ化オプション(=圧縮しない)の場合は省略する
- 処理時間の測定にはtimeコマンドを使用し、
ユーザタイムでの処理時間をファイルの圧縮にかかった時間とする
- 圧縮率の計算は“[圧縮後の容量] / [圧縮前の容量]”とする
- 各コマンドのバージョンは以下の物を使用
| コマンド |
バージョン |
| gzip |
1.3.12 |
| bzip2 |
1.0.5 |
| xz |
4.999.9beta |
| zip |
3.0 |
| 7zip(7za) |
9.20.1 |
| lzh(lha) |
1.14i |
という事で、実際にコマンドを叩きまくって計測をしてみた。
◆ テキスト(ログ)ファイル [元ファイルサイズ:528394240(504M)Byte]
● 処理速度(単位:秒)
| |
最速処理速度 |
速度指定無し |
最高圧縮率 |
| gzip |
5.06 |
11.15 |
16.98 |
| bzip2 |
96.78 |
171.10 |
170.94 |
| xz |
19.02 |
303.38 |
422.88 |
| zip |
5.01 |
11.27 |
17.35 |
| 7zip |
20.37 |
207.11 |
454.99 |
| lzh |
NoData |
17.95 |
NoData |
● 圧縮率(圧縮後容量:Byte | 圧縮率:%)
| |
最速処理速度 |
速度指定無し |
最高圧縮率 |
| 圧縮後容量 |
圧縮率 |
圧縮後容量 |
圧縮率 |
圧縮後容量 |
圧縮率 |
| gzip |
69740928(66.51M) |
13.199 |
56342711(53.73M) |
10.663 |
53053857(50.60M) |
10.041 |
| bzip2 |
47765217(45.55M) |
9.040 |
39473917(37.65M) |
7.471 |
39473917(37.65M) |
7.471 |
| xz |
52814696(50.37M) |
9.995 |
39297448(37.48M) |
7.437 |
34627800(33.02M) |
6.553 |
| zip |
69741068(66.51M) |
13.199 |
56342850(53.73M) |
10.663 |
53053996(50.60M) |
10.040 |
| 7zip |
49351228(47.06M) |
9.340 |
45921512(43.79M) |
8.691 |
34625193(33.02M) |
6.553 |
| lzh |
NoData |
– |
56100468(53.50M) |
11.185 |
NoData |
– |
………
◆ バイナリ(LiveCD)ファイル [元ファイルサイズ:680525824(649M)Byte]
● 処理速度(単位:秒)
| |
最速処理速度 |
速度指定無し |
最高圧縮率 |
| gzip |
27.26 |
29.38 |
29.57 |
| bzip2 |
160.31 |
203.46 |
199.18 |
| xz |
118.53 |
289.40 |
378.48 |
| zip |
24.43 |
26.00 |
25.84 |
| 7zip |
137.07 |
313.51 |
571.32 |
| lzh |
NoData |
56.43 |
NoData |
● 圧縮率(圧縮後容量:Byte | 圧縮率:%)
| |
最速処理速度 |
速度指定無し |
最高圧縮率 |
| 圧縮後容量 |
圧縮率 |
圧縮後容量 |
圧縮率 |
圧縮後容量 |
圧縮率 |
| gzip |
663346521(632.62M) |
97.476 |
662932387(632.22M) |
97.415 |
662931421(632.22M) |
97.416 |
| bzip2 |
671338147(640.24M) |
98.650 |
668833540(637.85M) |
98.282 |
668833540(637.85M) |
98.282 |
| xz |
662375208(631.69M) |
97.333 |
657594464(627.13M) |
96.630 |
657235092(626.79M) |
96.577 |
| zip |
663346660(632.62M) |
97.476 |
662932526(623.22M) |
97.415 |
662931560(632.22M) |
97.415 |
| 7zip |
666778042(635.89M) |
97.980 |
661232857(630.60M) |
97.165 |
661003682(630.38M) |
97.131 |
| lzh |
NoData |
– |
663947004(633.19M) |
97.564 |
NoData |
– |
計測の生データはこちら
テキストファイルでは圧縮速度最重視だとgzip、圧縮率最重視だとxzという結果になった。
しかし、圧縮後容量を見るとgzipとxzだと結構差のある結果に。
ログとかだと年単位で取得とかになるので、たかが数メガでも1年分(x365)するととんでもない事に。
そういう実用面を考えると、bzip2で最高ブロック数指定がバランスを取れているのかもしれない。
意外だったのが、テキストで最高圧縮率指定だと7zipが一番縮んだ事。
実行前は『xzが一番縮むだろうな~』と予想していただけに驚きだった。
その分、処理時間も一番長かったので実用面では工夫しないといけないだろうが(´・ω・`)
バイナリファイルの圧縮率ではxzの一人勝ちだった。
しかし、処理速度観点で見るとgzipとzipの一騎打ちに。
昔から使われているgzipとzipだけあって、様々なシーンでの高速処理が目に見えた結果だった。
圧縮処理については賛否両論あるし、それぞれのシーンによって使い分けるのが一番良いのだろうが、
実用シーンではbzip2がオールマイティに使えると感じた結果になりましたとさ(`・ω・´)
…と言いつつ、自鯖のlogrotateは未だにgzipなわけですが
« 続きを隠す
2014年06月07日(土) - 18:46 | カテゴリ:
Linux
最近OpenSSLの重大バグ発見率上がっているなぁ~(´・ω・`)
………
OpenSSLのバグと言えば、Heartbleed発見で世界中が震撼したのが新しい記憶。
HBが見つかってから期間があまり経っていないのに、またもやデカイバグが発見されたとの事。
どうやら、SSL/TLS通信経路上での脆弱性らしい。
で、攻撃(改ざん等)を防ぐ為には"クライアント or サーバのどちらかで、脆弱性修正されたOpenSSLへ更新する"事が必須と。
脆弱性修正の施されたOpenSSLは、
-
OpenSSL1.0.1系統 → OpenSSL1.0.1h
-
OpenSSL1.0.0系統 → OpenSSL1.0.0m
-
OpenSSL0.9.8系統 → OpenSSL0.9.8za
なので、対応したバージョン(最新版)へ更新する必要がある。
てか、0.9.8系統のバージョン末尾がアルファベットの"z"を超えちゃったよw
HBの時程、世間では騒がれていないけど
世のサーバ管理者は着実に対応していく必要ある問題だわね(´・ω・`)
……という事で、自分の休日その1はOpenSSLのバージョンアップで無くなったのでした(´;ω;`)
2014年05月18日(日) - 19:10 | カテゴリ:
Network
現在のns-lab内部の各セグメント間ルータはCisco1812を使っているのだが、
Webブラウザから同時に10サイト位アクセスすると、
CBACが働き過ぎて応答不能状態になったりしている現状(´・ω・`)
まぁ、ソフトウェア処理なので重くなるのは仕方ないと妥協。
だがここで思ったのは、
『ネトゲやっている時にルータ過負荷で応答不能になったらどうなるのよ』という点。
と言っても自分は、普段ネトゲを全くやらないのでどこまでトラフィック流れているとか、
セッションがどうなっているとかは未知数だった。
という事で、ネトゲ枠(?)として唯一自分がプレイしているACVDを2時間位プレイして、
トラフィックとかCisco 1812のCPU負荷を計測してみた。
値はあくまで参考程度という事で―――
今回の構成(略図)は下記参照
本当はトポロジアイコン使うべきなんだろうけど、面倒なので仕方ないね(´・ω:;.:…
[PS3] -> [Cisco2950T] -> [Cisco1812J] -> [Gateway] -> [WAN] -> [ACVDサーバ]
※1812で、RIPv2とCBACを動かしている状態。他の特別なルーティングとかは無し
ローカルでやっていてもトラフィック計測する意味が無いので、
『傭兵登録->出撃』をひたすら2時間繰り返して計測。
値の取得は、LANに構築してあるzabbixからCiscoのSNMP(MIBで)を1分毎に取得する方法で行ってみた。
その結果のグラフが↓
実際に傭兵登録しだしたのが21:05あたり。で、初マッチが21:10あたり。


トラフィックグラフの縦軸スケールは最新値で最適化をしちょるので参考程度で。
やはり、セッションを張りだしてから(マッチング待機した直後)のCPU負荷がちょい上がっていた。
トラフィックの方も同じく、待機しだしてからが多めな印象。
しかし、ネットワークで出撃している最中のトラフィック量はそれ程多くなかった。
個人的には、1MByte/s程度は行っているのかと思っていたのだが、
瞬間的に30KByte/sを飛ばした後は、20KByte/sのデータをずっと飛ばしている感じだった。
ま~、20KByte/sで飛ばしていても積もれば山となるわけですが。
今回はMIBで、しかも1分毎の取得なのでリアルタイムという観点では正確性に欠けるのだが、
大体の値がわかったので個人的に満足。
…次やる時は、もっと上位のルータ+レギュレーションをちゃんと決めて計測したい所。
« 続きを隠す