ローカルUNIXソケットを使用したプロセス間通信のスループットベンチマーク/測定を知っている人はいますか?
データベースからデータを要求するソフトウェアと同じサーバーにローカルデータベースインスタンスを置くことと、ネットワークリンク、特にギガビットイーサネットなどのネットワークリンクを介して通信する必要がある場合のパフォーマンス上の利点を説明したいと思います。比較的遅いです。
オンラインでの検索中に、1秒あたりのジョブは表示されますが、1秒あたりのスループット(例:12GB / s)は表示されないいくつかのベンチマークを見つけました。
パフォーマンスは、特定のシステムのメモリスループットやその他のハードウェア機能などの要因によって異なる可能性があることを知っていますが、おおよそのアイデアです。
これは基本的なTCPパフォーマンスへの参照や比較ではありません。
ベストアンサー1
あなたはそれを使用することができますソカット簡単なUNIXソケット速度テスト用です。
私のラップトップから得られた結果は次のとおりです。
#Generate 1GB random file in the "shared memory" (i.e. RAM disk)
>dd if=/dev/urandom of=/dev/shm/data.dump bs=1M count=1024
UNIXソケットを介したSSD(メモリーディスク)
>socat -u -b32768 UNIX-LISTEN:/tmp/unix.sock ./data.dump &
>socat -u -b32768 "SYSTEM:dd if=/dev/shm/data.dump bs=1M count=1024" UNIX:/tmp/unix.sock
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.96942 s, 545 MB/s
UNIXソケットを介したメモリ対メモリ
>socat -u -b32768 UNIX-LISTEN:/tmp/unix.sock /dev/shm/data.dump.out &
>socat -u -b32768 "SYSTEM:dd if=/dev/shm/data.dump bs=1M count=1024" UNIX:/tmp/unix.sock
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.927163 s, 1.2 GB/s
UNIXソケットを介して/ dev / nullにメモリを保存する(廃棄)
>socat -u -b32768 UNIX-LISTEN:/tmp/unix.sock /dev/null &
>socat -u -b32768 "SYSTEM:dd if=/dev/shm/data.dump bs=1M count=1024" UNIX:/tmp/unix.sock
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.720415 s, 1.5 GB/s
UNIXソケット経由で/dev/zeroから/dev/null
>socat -u -b32768 UNIX-LISTEN:/tmp/unix.sock /dev/null &
>socat -u -b32768 "SYSTEM:dd if=/dev/zero bs=1M count=1024" UNIX:/tmp/unix.sock
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.491179 s, 2.2 GB/s
ご覧のとおり、「メモリーディスク」のテストスループットも 545MB/s (例: ~ 4360MiB/s) です。これは、1 GB イーサネット接続の理論上の最大スループット(例: ~ 1000/8 = 125MB/s)よりはるかに高いです。 、プロトコルのオーバーヘッドも考慮しません)。
ポリスチレン
これは、実際のテストではなく、いくつかの簡単なツールを使用した単純なテストにすぎないことに注意してください。適切基準。