誤った並列化による性能劣化(その2)

前回の記事に引き続いて、マルチスレッドプログラムの性能についてです。前回は「コンテキストスイッチングや排他制御のオーバヘッドに見合う処理でなければ並列化は逆効果」ということがわかりました。今回はmutexのロック獲得と開放について簡単な実験します。

Continue reading →

誤った並列化による性能劣化(その1)

前回の記事で「複数のスレッドが共有する変数をインクリメントするときには排他制御が必要」という話をしました。その結果、正しい値を得ることには成功したものの、性能が著しく落ちるという知見を得ました。今回は性能が出ないマルチスレッドプログラムに対して割り当てるCPU数をあえて制限してみます。

Continue reading →

スレッド間でカウンタを共有する

C言語では、複数のスレッドが共有する変数を単純にインクリメントすると期待通りの結果になりません。あるいは簡単なテストでうまく動いたとしても、高負荷になるとおかしな結果を返します。この手のバグは再現条件を揃えること自体が難しいので、はじめから安全なコードを書けるように挙動を知っておくことが大事です。

Continue reading →

OSSEC v2.9.0 でApacheアクセスログのPort番号を解釈するデコーダを定義する

2017年2月9日にOSSECのバージョン2.9.0がリリースされました。

v2.9.0ではIPv6がサポートされ、IPアドレスを解釈するデコーダの定義が更新されています。
以前の記事で、クライアントのPort番号をApacheのアクセスログに出力する場合のデコーダ定義について書きましたが、このような場合、v2.9.0ではどのようにデコーダを定義すればよいか調べてみました。

本記事で対象とするOSSEC、ApacheとOSのバージョンは以下のとおりです。

OSSEC: 2.9.0
Apache: 2.4
OS: Ubuntu 14.04

Continue reading →