epoll_create(int size) 에서 size의 의미...

peccavi의 이미지

epoll_create(int size) 에서 size의 의미가 무엇인지 정확히 개념이 안잡힙니다.

manpage를 찾아봤더니..

Quote:
Open an epoll file descriptor by requesting the kernel allocate an event backing store dimensioned for size descriptors. The size is not the maximum size of the backing store but just a hint to the kernel about how to dimension internal structures.

joinc 에서는...

Quote:
epoll_create()는 이벤트를 저장하기 위한 size만큼의 공간을 커널에 요청한다. 커널에 요청한다고 해서 반드시 size만큼의 공간이 확보되는 건 아니지만 커널이 대략 어느 정도의 공간을 만들어야 할지는 정해줄 수 있다.

epoll.h 에서는

Quote:
The "size" parameter is a hint specifying the number of file descriptors to be associated with the new instance.

여기서 말하는 size들이 이벤트를 저장하기위한 객체들의 수인지, 아니면 최대로 생성할 디스크립터들의 수인지 잘 모르겠습니다.

항상 그렇다는 보장은 없지만 일반적으로 이벤트 객체들의 수와 최대 디스크립터들의 수가 일치하는 경우가 많은걸로 봐서는 size = 이벤트를 저장할 객체의 수 로 해도 될것 같긴 한데, 무슨 기준으로 계산해서 저 값을 써주는건지 모르겠네요.

도움좀 부탁드립니다.

ctcquatre의 이미지

이글과 같은 내용을 질문하려다가 이미 질문하신분이 계셔서
다시 위로 올립니다.

struct epoll_event 구조체는 디스크립터들의 수인것 같은데.

저 사이즈값은 대체 어떤걸 의미하는지 검색해도 설명들이
정확히 콕콕 집지 못하고 모호하네요.

Quote:

항상 그렇다는 보장은 없지만 일반적으로 이벤트 객체들의 수와 최대 디스크립터들의 수가 일치하는 경우가 많은걸로 봐서는 size = 이벤트를 저장할 객체의 수 로 해도 될것 같긴 한데, 무슨 기준으로 계산해서 저 값을 써주는건지 모르겠네요.

저도 그렇게 생각했었는데.
joinc의 epoll 예제에서는 두 값이 다르더군요.

혹시 아시는분 있나요?

Chaos to Cosmos,
Chaos to Chaos,
Cosmos to Cosmos,
Cosmos to Chaos.

peccavi의 이미지

ㅋㅋ 올려주셔서 감사합니다 :D

----
jai guru deva om...

peccavi의 이미지

일년이 지나도록 답변이 없어서, 다시 올려봅니다 ^^/

-_ -;;

----
jai guru deva om...

----
jai guru deva om...

prether의 이미지

현재 Linux kernel 2.6을 분석해보면
epoll_create()의 parameter는 아무 의미 없습니다.

어떤 값을 넣어도 어차피 참조하지 않으니 무의미하고요

아마도 미래에 그 값을 가지고 최적의 epoll용 kernel data structure
를 만드는데 만들기 위해 사용하려는 일종의 reserved인거 같습니다.

/***************************************
Being the one is just like being in love.
***************************************/

peccavi의 이미지

답변 감사드립니다.

헌데, 몇차례 테스트를 했었습니다만 size가 현시점(2.6.17)에서 의미가 없는건 아닌것 같습니다.

epoll 소켓에 무작위로 접속하는 더미 클라이언트들을 실행해 테스트를 해본 결과로는
epoll_create()에서 size를 주는 만큼
epoll_wait()의 리턴값(stevens아저씨의 nready값)이 변하는것 같습니다.
nready값이 최대 size를 넘지 않았습니다.

결과 그대로 한번에 처리하는 이벤트의 수를 size로 정해서 사용하는 쪽으로 마음은 굳어지고 있습니다만
source를 확인하셨다니 다시 망설여 지는군요..

----
jai guru deva om...

----
jai guru deva om...

댓글 달기

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