プロセスやマシンがIOにバインドされる時期をどのように確認しますか?

プロセスやマシンがIOにバインドされる時期をどのように確認しますか?

さまざまなsqliteデータベースに書き込むnode.jsプロセスがあります。 Sqliteは、データベースごとに1つの同時書き込みのみを処理できます。これはデータベースごとに一度だけ書き込むことができますが、複数の異なるデータベースに同時に書き込まれるので大丈夫です。

システムで書き込みボトルネックが発生する場所を確認する方法: 1. オペレーティングシステム (Debian Wheezy) 2. SSD 3. Node.js

各データベースに同時書き込みが発生しないため、sqliteはボトルネックになるとは思わないが、書き込みは同時に他のデータベースで発生する。

編集:新しいボックスに展開するか、node.jsプロセスを追加する時期などを決定できるように、境界要素を決定しようとしています。

答え1

sarコマンドは、さまざまで便利なシステム活動を提供します。たとえば、一般的なCPU使用率の場合:

sar -u 2 10

表示されています(注 - Debianシステムではありませんが類似している必要があります):

09:31:55 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
09:31:57 AM       all      1.71      0.00      1.14      0.00      0.00     97.14
09:31:59 AM       all      1.00      0.00      0.50      0.00      0.00     98.51

I/O レイテンシを表示します。systemこの数は、要求を処理するために必要なCPU使用量のためにI / Oの影響を受けますが、iowait時間はデバイスによる遅延を示します。

ディスク使用量の場合:

sar -d 2 110

以下を提供します。

09:33:03 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
09:33:05 AM    dev8-0     11.06      0.00    112.56     10.18      0.02      1.59      0.45      0.50
09:33:05 AM    dev8-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

したがって、待ち時間はシステムがI / Oバインドされているかどうかを判断するのに役立ちます。

答え2

を使用してアプリケーションをプロファイリングしてみてくださいiotop

 sudo apt-get install iotop
 sudo iotop

関連情報