misskey
misskey copied to clipboard
システムメトリクスのパフォーマンス改善
Related to https://github.com/misskey-dev/misskey/issues/11065
Summary
現在システム情報の取得の際にはsysteminformation
を使用しておりコマンドを逐一実行しているため数十ミリ秒〜百十数ミリ秒程度かかっているが、これをオペレーティングシステムが提供している低レベルAPI(Win32 APIなど)やNode.jsのビルトインモジュールを使用するようにして数百マイクロ秒に収まるようにしたい。(イベントループを長くブロックしている問題はNode.jsが使用しているLibuvのワーカープールにタスクをディスパッチすることで解決する)
Benchmark
Name | Before (avg) | After (avg) | Speed |
---|---|---|---|
macOS (Disk I/O) | 13'592 µs/iter | 115 µs/iter | 118.01x |
macOS (Network) | 72'932 µs/iter | 29'782 ns/iter | 2448.84x |
macOS (Memory) | 8'125 µs/iter | 2'171 ns/iter | 3742.05x |
macOS (Disk space) | 31'515 µs/iter | 7'332 ns/iter | 4298.13x |
FreeBSD (Network) | 22'907 µs/iter | 861 ns/iter | 26620.24x |
FreeBSD (Memory) | 3'764 µs/iter | 2'586 ns/iter | 1455.94x |
FreeBSD (Disk space) | 8'090 µs/iter | 32'522 ns/iter | 248.75x |
Linux (Disk I/O) | 4'715 µs/iter | 241 µs/iter | 19.55x |
Linux (Network) | 25'657 µs/iter | 9'836 ns/iter | 2608.46x |
Linux (Disk space) | 3'228 µs/iter | 47'656 ns/iter | 67.74x |
Windows (Network) | N/A | N/A | 15302.16x |
Windows (Disk space) | N/A | N/A | 9092.54x |