프로그램 로드 컨트롤(getloadavg)
글쓴이: antz / 작성시간: 목, 2003/12/11 - 12:25오전
일일업데이트 프로그램을 HA(high-availability) 시스템에서 돌리고 있습니다.
이 프로그램은 4시간에 걸쳐 실행되고, 디스크 I/O 작업이 많습니다.
제가 시스템 관리자는 아니어서 잘은 모르지만,
클러스터링 서버가 갑작스런 로드 폭주로 반대 시스템으로 전환된다고
합니다. 그때 제 프로그램이 문제가 되는것 같습니다.
이 문제가 항상 발생되는건 아니구요. 시스템과 같이 발생되는것 같습니다.
프로그램 실행시 평상시는 loadavg가 3 이하인데.
폭주때는 많이 올라갑니다. (로드 그래프를 봤는데 수치는 생각이 안나네요.)
그래서, 프로그램 시작과 함께 로드를 체크해서 프로그램의 DISK I/O를 컨트롤하고 싶습니다.
어떤식으로 해야할지 잘 모르겠습니다.
glibc에 보니, getloadavg() 함수가 있는걸 봤습니다.
이 함수와 signal을 잘 활용하면 될까요?
답변 부탁 드리겠습니다.
Forums:
diskio와 loadavg
diskio와 loadavg는 엄격히 이야기 하면 커다란 상관은 없습니다.
위의 내용을 추측컨데, diskio를 수행하는 프로세스들이 크론등을 통해
일정시간대에 로드될때, 프로세스들이 대기하는것 같습니다.
loadavg는 단지 runqueue에 대기 프로세스 개수를 의미합니다.
리눅스라면 /proc/loadavg를 확인 또는 Document를 확인하세요.
프로세스의 증가로서 발생하는지, diskio가 증가해서 발생하는지를 확인하시고
프로세스 증가로 인한것이라면, /proc/loadavg는 sysinfo api를 통해 체크하는것은 좋을듯하며
diskio를 체킹하기 위해서는 /proc/stat를 통해 diskio를 체크할수 있습니다.
조금이라도 도움이 되시길..
잠자는 사자는 흔들어 깨운다.
댓글 달기