프로세스나 머신이 IO 바인딩되는 시기를 어떻게 확인하나요?

프로세스나 머신이 IO 바인딩되는 시기를 어떻게 확인하나요?

다양한 sqlite 데이터베이스에 쓰는 node.js 프로세스가 있습니다. Sqlite는 데이터베이스당 하나의 동시 쓰기만 처리할 수 있습니다. 이는 한 번에 데이터베이스당 한 번만 쓸 수 있지만 여러 다른 데이터베이스에 동시에 기록되기 때문에 괜찮습니다.

시스템에서 쓰기 병목 현상이 발생하는 위치를 확인하는 방법: 1. 운영 체제(Debian Wheezy) 2. SSD 3. Node.js

각 데이터베이스에 동시 쓰기가 발생하지 않기 때문에 sqlite가 병목 현상이 될 것이라고 생각하지 않지만 쓰기는 동시에 다른 데이터베이스에서 발생합니다.

편집: 새 상자로 확장하거나 node.js 프로세스를 더 추가할 시기 등을 결정할 수 있도록 경계 요소를 결정하려고 합니다.

답변1

sar 명령은 다양하고 유용한 시스템 활동을 제공합니다. 예를 들어 일반적인 CPU 사용량의 경우:

sar -u 2 10

표시됨(참고 - 데비안 시스템은 아니지만 유사해야 함):

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

따라서 대기 시간(await)은 시스템이 I/O 바인딩되어 있는지 여부를 결정하는 데 도움이 될 수 있습니다.

답변2

을 사용하여 애플리케이션을 프로파일링해 보세요 iotop.

 sudo apt-get install iotop
 sudo iotop

관련 정보