[질문]lsof 관하여

chaka4u의 이미지

Linux에서 open files과 관련하여 보통 확인하는 것이
/proc/sys/fs/file-max
/proc/sys/fs/file-nr
일 것입니다.

그런데 lsof와 위의 파일들과 어떤 관계가 있는 것인지요?
즉, lsof의 정확한 의미가 무엇이며 실제 open file과 어떤 관계가 있는지요?

또한 lsof | wc -l 의 값에 어떤 최대값은 있는지요?
현재 file-nr의 첫번째 값은 2000대인데, lsof | wc -l 의 값은
100000 이 넘어가는 경우가 발생하는데
이것이 문제가 될 가능성이 있을까요?

그럼, 좋은 하루되세요.

choissi의 이미지

/usr/src/linux-2.4/Documentation/sysctl/fs.txt

Quote:
file-max & file-nr:

The kernel allocates file handles dynamically, but as yet it
doesn't free them again.

The value in file-max denotes the maximum number of file-
handles that the Linux kernel will allocate. When you get lots
of error messages about running out of file handles, you might
want to increase this limit.

The three values in file-nr denote the number of allocated
file handles, the number of used file handles and the maximum
number of file handles. When the allocated file handles come
close to the maximum, but the number of actually used ones is
far behind, you've encountered a peak in your usage of file
handles and you don't need to increase the maximum.

위에 내용을 보시면 file-nr의 속성은 이해가 되실테고
lsof는 파일별로 공유하는 file structure 까지 다 나오니
많을 껍니다.

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

chaka4u의 이미지

먼저 답변을 해주신데 감사드립니다.
file-max나 file-nr의 값의 의미는 잘 알겠습니다.

실제로 제가 궁금한 것은 lsof의 결과입니다.
lsof또한 list of open files이므로 open file과 관련이 있을 것 같은데
서버내에서 어떤 한계치가 있는가 하는 것입니다.

lsof | wc -l 의 결과가 100000이 넘어가게 되면
문제가 발생하는 것 같은데 file-nr이나 기타 다른 부분을 체크해봐도
max값에 도달하지 않고 있습니다.

현재로서는 lsof의 결과에 협의를 두고 접근하고 있는데
lsof가 보여주는 데이타가 정확히 어느 부분을 read해서 보여주는 건가요?

errai의 이미지

lsof에서 보여주는것은 각 process에서 핸들링 하고 있는 file descriptor를
자세히 보여주는 것입니다. 만약 한 프로세스에서 파일하나를 열고 쓰레드를
띄우거나 fork를 했다면 각 쓰레드 마다 1개씩의 파일을 열고 있는것이 보일 것입니다. 물론 서로 공유하고 있는 부분이지만 lsof에서 볼때는 따로따로 각자
보여주는 것이지요.

즉 lsof에서 보이는 수를 단순하게 시스템에서 사용하는 전체 file open갯수
라고 보면 안된다는 것입니다. 그런데 십만개나 떠있다니.. 처음보는 경우입니다. ^^; 이상하군요.

그리고 커널 문서에 있는 file-nr 관련 설명은 일부 잘못되었습니다.
언제 업데이트 할런지 모르겠습니다. :?
file-nr의 가운데 숫자는 free file handle 갯수를 나타냅니다.
테스트 해보면 쉽게 알아챌수 있을 것입니다.

choissi의 이미지

lsof 멘페이지를 보면
다양한 정보를 조회 하더군여

/proc/pid/fd/*
여기 정보도 조회를 하지만,
/proc/pid/mmap
같은 파일도 열어서 사용중인 공유 라이브러리등도 보여줍니다.

lsof도 결국 조사하는 것이
system call로 조사를 하는 것일테니
strace 해보시면 뭔짓을 하는지 알수 있을꺼 같네요

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.