[완료] netstat 혹은 iostat 혹은 ifconfig 등의 프로그램에서 초당 데이터량/(사용자or프로세스) 보기

jeon1226의 이미지

16개의 슬레이브 노드와 1개의 메인 노드가 있는 수치계산용 클러스터를 관리하고 있습니다.
운영체제로는 데비안을 사용하고 있습니다. 잡 관리는 Sun grid engine로 하고, 슬레이브노드의 /home은
메인 노드의 /home을 nfs로 마운트하여 사용합니다. 슬레이브 노드에서 잡이 실제로 돌아가고, 메인 노드는
nfs제공 및 잡 관리 역할을 합니다.

문제점:
어떤 사용자가 파일 입출력을 매우 잦게 하거나 매우 많이 하면 메인 노드의 nfs가 매우 바빠지고 (load average가 10까지?)
멀쩡하게 잘 돌아가던 "파일을 현재 열고 있는 모든 잡"들이 현저하게 느려집니다. 30개의 잡이 돌아갈 수 있는데,
어떤 불량 사용자가 1개의 엄청난 파일 IO를 하는 잡 하나를 넣어놓으면 29개의 잡이 느려지게 됩니다.
각각의 슬레이브 노드로 들어가서 top로 확인하면 잡이 몇초씩 멈추어(run이 아닌 sleep상태)있는 것을 확인할 수 있습니다.

이런 경우 불량 사용자의 잡을 멈추거나 죽여버리면 간단히 해결되지만, 어떤 사용자, 혹은 프로세스가 문제인지 알 수 없습니다.

1. 네트워크가 병목인지, 메인노드 하드디스크 IO가 병목인지 알 수가 없습니다.
2. 어떤 사용자 혹은 프로세스가 문제를 일으키는지 알기 어렵습니다.

netstat에서 프로세스를 확인하는 방법으로 보면 문젝 되는건 죄다 nfs로 뜨기 때문에 알기 어렵습니다. 또한 초당 전송량을 보여주지 않습니다.
ifconfig에서 초당 데이터량을 유추해볼 수 있지만 누가 문제가 되는지 정보가 없습니다.
iostat에서도 각 프로세스의 IO량을 알려주진 않습니다.

저는 "어떤 프로세스/유저"가 "현재 네트워크를 얼마나 사용하고 있는지(초당)", "IO를 얼마나 사용하고 있는지(초당)" 알고 싶습니다. 이런것을 모니터하게 해줄 수 있는 프로그램이 있을까요? 혹은 다른 프로그램에서 어떤 옵션을 주면 됩니까?

다콘의 이미지

kernel 2.6.20 이상을 보면 Enable per-task storage I/O accounting이라는 항목이 있을겁니다.
( CONFIG_TASK_IO_ACCOUNTING )
RHEL(CentOS)에서는 5.4 개발 커널에 들어가 있습니다.
다른 배포판은 어떤지 잘 모르겠네요.

/proc/self/io 파일이 있으면 이 기능을 지원하고 있는겁니다.

/proc/xxx/io (xxx는 pid) 식으로 각 프로세스마다 I/O 상태를 볼 수 있습니다.
가장많이 I/O를 사용하는 프로세스를 보려면 dstat (http://dag.wieers.com/home-made/dstat/ )이 편합니다.
dstat -M topio 처럼 모듈을 불러오면 됩니다.
일반적인 dstat 항목에 topio를 더할려면 dstat -a -M topio
vmstat과 비슷하게 볼려면 dstat -v -M topio
-n 옵션을 더하면 네트워크 전송량을 더해서 볼 수 있습니다.
네트워크 전송량은 프로세스 단위는 안됩니다.

jeon1226의 이미지

dstat을 깔아서 결국 해결을 봤습니다. nfs에 쓰는게 io로 잡히진 않았지만 네트워크 전송량을 보고 확인했습니다.
친절한 답변에 감사드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.