青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

epoll Scalability Web Page

epoll Scalability Web Page

Introduction

Davide Libenzi wrote an event poll implementation and described it at the /dev/epoll home page here. His performance testing led to the conclusion that epoll scaled linearly regardless of the load as defined by the number of dead connections. However, the main hindrance to having epoll accepted into the mainline Linux kernel by Linus Torvalds was the interface to epoll being in /dev. Therefore, a new interface to epoll was added via three new system calls. That interface will hereafter be referred to as sys_epoll. Download sys_epoll here.


sys_epoll Interface


  • int epoll_create(int maxfds);

    The system call epoll_create() creates a sys_epoll "object" by allocating space for "maxfds" descriptors to be polled. The sys_epoll "object" is referenced by a file descriptor, and this enables the new interface to :

    • Maintain compatibility with the existing interface
    • Avoid the creation of a epoll_close() syscall
    • Reuse 95% of the existing code
    • Inherit the file* automatic clean up code

  • int epoll_ctl(int epfd, int op, int fd, unsigned int events);

    The system call epoll_ctl() is the controller interface. The "op" parameter is either EP_CTL_ADD, EP_CTL_DEL or EP_CTL_MOD. The parameter "fd" is the target of the operation. The last parameter, "events", is used in both EP_CTL_ADD and EP_CTL_MOD and represents the event interest mask.

  • int epoll_wait(int epfd, struct pollfd * events, int maxevents, int timeout);

    The system call epoll_wait() waits for events by allowing a maximum timeout, "timeout", in milliseconds and returns the number of events ( struct pollfd ) that the caller will find available at "*events".

sys_epoll Man Pages

Testing

We tested using two applications:

  • dphttpd
  • pipetest

dphttpd

Software

The http client is httperf from David Mosberger. Download httperf here. The http server is dphttpd from Davide Libenzi. Download dphttpd here. The deadconn client is also provided by Davide Libenzi. Download deadconn here.

Two client programs (deadconn_last and httperf) run on the client machine and establish connections to the HTTP server (dphttpd) running on the server machine. Connections established by deadconn_last are "dead". These send a single HTTP get request at connection setup and remain idle for the remainder of the test. Connections established by httperf are "active". These continuously send HTTP requests to the server at a fixed rate. httperf reports the rate at which the HTTP server replies to its requests. This reply rate is the metric reported on the Y-axis of the graphs below.

For the tests, the number of active connections is kept constant and the number of dead connections increased from 0 to 60000 (X-axis of graphs below). Consequently, dphttpd spends a fixed amount of time responding to requests and a variable amount of time looking for requests to service. The mechanism used to look for active connections amongst all open connections is one of standard poll(), /dev/epoll or sys_epoll. As the number of dead connections is increased, the scalability of these mechanisms starts impacting dphttpd's reply rate, measured by httperf.

dphttpd SMP

Server

  • Hardware: 8-way PIII Xeon 700MHz, 2.5 GB RAM, 2048 KB L2 cache
  • OS : RedHat 7.3 with 2.5.44 kernel, patched with ONE of:
  • /proc/sys/fs/file-max = 131072
  • /proc/sys/net/ipv4/tcp_fin_timeout = 15
  • /proc/sys/net/ipv4/tcp_max_syn_backlog = 16384
  • /proc/sys/net/ipv4/tcp_tw_reuse = 1
  • /proc/sys/net/ipv4/tcp_tw_recycle = 1
  • /proc/sys/net/ipv4/ip_local_port_range = 1024 65535
  • # ulimit -n 131072
  • # dphttpd --maxfds 20000 --stksize 4096
  • default size of reply = 128 bytes

Client

  • Hardware: 4-way PIII Xeon 500MHz, 3 GB RAM, 512 KB L2 cache
  • OS : RedHat 7.3 with 2.4.18-3smp kernel
  • /proc/sys/fs/file-max = 131072
  • /proc/sys/net/ipv4/tcp_fin_timeout = 15
  • /proc/sys/net/ipv4.tcp_tw_recycle = 1
  • /proc/sys/net/ipv4.tcp_max_syn_backlog = 16384
  • /proc/sys/net/ipv4.ip_local_port_range = 1024 65535
  • # ulimit -n 131072
  • # deadconn_last $SERVER $SVRPORT num_connections
    where num_connections is one of 0, 50, 100, 200, 400, 800, 1000, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 55000, 60000.
  • After deadconn_last reports num_connections established
    # httperf --server=$SERVER --port=$SVRPORT --think-timeout 5 --timeout 5 --num-calls 20000 --num-conns 100 --hog --rate 100

Results for dphttpd SMP

dphttpd UP

Server

  • 1-way PIII, 866MHz, 256 MB RAM
  • OS: 2.5.44 gcc 2.96 (RedHat 7.3)
  • /proc/sys/fs/file-max = 65536
  • /proc/sys/net/ipv4/tcp_fin_timeout = 15
  • /proc/sys/net/ipv4/tcp_tw_recycle = 1
  • # ulimit -n 65536
  • # dphttpd --maxfds 20000 --stksize 4096
  • default size of reply = 128 bytes

    Client

    • 1-way PIII, 866MHz, 256 MB RAM
    • OS: 2.4.18, gcc 2.96 (RedHat 7.3)
    • /proc/sys/fs/file-max = 65536
    • /proc/sys/net/ipv4/tcp_fin_timeout = 15
    • /proc/sys/net/ipv4.tcp_tw_recycle = 1
    • # ulimit -n 65536
    • # deadconn_last $SERVER $SVRPORT num_connections
      where num_connections is one of 0, 50, 100, 200, 400, 800, 1000, 2000, 4000, 6000, 8000, 10000, 12000, 14000, 16000.
    • After deadconn_last reports num_connections established
      # httperf --server=$SERVER --port=$SVRPORT --think-timeout 5 --timeout 5 --num-calls 20000 --num-conns 100 --hog --rate 100

    Results for dphttpd UP



    Pipetest

    David Stevens added support for sys_epoll to Ben LaHaise's original pipetest.c application. Download Ben LaHaise's Ottawa Linux Symposium 2002 paper including pipetest.c here.Download David Steven's patch to add sys_epoll to pipetest.c here.


    Pipetest SMP

    System and Configuration

    • 8-way PIII Xeon 900MHz, 4 GB RAM, 2048 KB L2 cache
    • OS: RedHat 7.2 with 2.5.44 kernel, patched with one of:
    • /proc/sys/fs/file-max = 65536
    • # ulimit -n 65536
    • # pipetest [poll|aio-poll|sys-epoll] num_pipes message_threads max_generation
      • where num_pipes is one of 10, 100, 500, or 1000-16000 in increments of 1000
      • message_threads is 1
      • max_generantion is 300

    Results for pipetest on an SMP

    Results for Pipetest on a UP

    Same Hardware and Configuration as with the SMP pipetest above
    with CONFIG_SMP = n being the only change.

    sys_epoll stability comparisons Oct 30, 2002


    Following are performance results comparing version 0.14 of the (Download v0.14 here) to the version, v0.9, originally used for the performance testing outlined above. (Download v0.9 here) Testing was done using two measures: pipetest details here. and dphttpd details here..

    Analysis and Conclusion

    The system call interface to epoll performs as well as the /dev interface to epoll. In addition sys_epoll scales better than poll and AIO poll for large numbers of connections. Other points in favour of sys_epoll are:

    • sys_epoll is compatible with synchronous read() and write() and thus makes it usable with existing libraries that have not migrated to AIO.
    • Applications using poll() can be easily migrated to sys_epoll while continuing to use the existing I/O infrastructure.
    • sys_epoll will be invisible to people who don't want to use it.
    • sys_epoll has a low impact on the existing source code.
      
      arch/i386/kernel/entry.S  |    4
      fs/file_table.c           |    4
      fs/pipe.c                 |   36 +
      include/asm-i386/poll.h   |    1
      include/asm-i386/unistd.h |    3
      include/linux/fs.h        |    4
      include/linux/list.h      |    5
      include/linux/pipe_fs_i.h |    4
      include/linux/sys.h       |    2
      include/net/sock.h        |   12
      net/ipv4/tcp.c            |    4
      

    Due to these factors sys_epoll should be seriously considered for inclusion in the mainline Linux kernel.

    Acknowledgments

    Thank You to: Davide Libenzi Who wrote /dev/epoll, sys_epoll and dphttpd.
    He was an all around great guy to work with.
    Also Thanks to the following people who helped with testing and this web site:
    Shailabh Nagar, Paul Larson , Hanna Linder, and David Stevens.


    posted on 2006-05-28 09:58 楊粼波 閱讀(760) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程

    青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久精品国产免费观看同学| 老司机午夜精品视频在线观看| 久久亚洲综合色| 午夜精品久久久久久久99水蜜桃| 欧美视频中文字幕在线| 中文在线资源观看视频网站免费不卡| 亚洲人www| 蜜臀91精品一区二区三区| 亚洲国产成人午夜在线一区| 亚洲第一视频| 欧美午夜在线| 久久久久久午夜| 久久久久看片| 亚洲天堂av图片| 亚洲欧美视频| 亚洲国内精品| 中文久久精品| 黄色欧美成人| 日韩视频欧美视频| 国产日韩欧美视频| 亚洲国产精品久久久久| 欧美日韩一区二区在线| 久久久噜噜噜久噜久久| 欧美精品免费播放| 久久av一区二区| 欧美波霸影院| 久久精品国产一区二区三区免费看| 久久裸体视频| 午夜精品影院在线观看| 蜜臀va亚洲va欧美va天堂| 亚洲自拍偷拍麻豆| 另类专区欧美制服同性| 亚洲一区二三| 蘑菇福利视频一区播放| 性做久久久久久久久| 蜜桃av久久久亚洲精品| 欧美一区成人| 欧美精品精品一区| 久久久久综合一区二区三区| 欧美三级电影精品| 欧美高清不卡在线| 国产欧美日韩高清| 99精品热视频只有精品10| 在线观看欧美精品| 午夜宅男欧美| 亚洲综合999| 欧美日韩第一区| 欧美不卡激情三级在线观看| 国产午夜精品视频| 亚洲一区国产一区| 亚洲视频欧美在线| 欧美精品日韩一本| 亚洲二区视频| 亚洲国产精品久久久久| 久久精品99国产精品酒店日本| 亚洲主播在线| 欧美视频一区| 亚洲精选视频在线| 日韩视频三区| 欧美劲爆第一页| 91久久国产自产拍夜夜嗨| 亚洲二区在线观看| 久久综合福利| 欧美福利一区二区三区| 亚洲大黄网站| 亚洲丁香婷深爱综合| 亚洲国产视频直播| 免费国产一区二区| 欧美激情网友自拍| 亚洲理论电影网| 欧美激情按摩在线| 99国产精品久久久久久久成人热| 日韩一级在线| 欧美日韩一区二区三区在线| 最新国产成人在线观看| 亚洲六月丁香色婷婷综合久久| 麻豆成人在线| 亚洲精品乱码久久久久久黑人| 艳女tv在线观看国产一区| 欧美区视频在线观看| 一区二区三区日韩精品视频| 亚洲欧美在线播放| 国产视频在线观看一区二区三区| 欧美中在线观看| 欧美高清视频免费观看| 一区二区毛片| 国产精品视频观看| 久久激五月天综合精品| 免费久久99精品国产自| 亚洲精品视频在线观看网站| 欧美日韩亚洲一区二区三区| 亚洲午夜影视影院在线观看| 久久九九精品| 亚洲国产精品va在线看黑人动漫| 免费看精品久久片| 99国产精品一区| 久久久国产精品一区二区中文| 1024亚洲| 国产精品日本一区二区| 欧美制服丝袜| 99视频精品全国免费| 久久看片网站| 艳女tv在线观看国产一区| 国产一区免费视频| 欧美日韩国产综合在线| 欧美亚洲一区二区在线| 亚洲激情综合| 开元免费观看欧美电视剧网站| 一区二区精品国产| 影音先锋亚洲视频| 国产精品久久久久久久久久免费| 久久天天躁狠狠躁夜夜av| 99这里有精品| 亚洲高清在线| 久久久国产午夜精品| 9l国产精品久久久久麻豆| 国产日韩欧美亚洲一区| 欧美日韩精品二区| 裸体女人亚洲精品一区| 在线视频精品一区| 欧美激情国产日韩| 久久久久久91香蕉国产| 亚洲欧美综合一区| 一区二区三区高清| 亚洲国产影院| 樱桃国产成人精品视频| 国产欧美一区二区视频| 欧美日韩一区二区在线观看视频| 久热精品视频在线| 久久激情视频久久| 校园春色国产精品| 亚洲在线视频一区| 一区二区三区高清| 亚洲欧洲美洲综合色网| 久久婷婷蜜乳一本欲蜜臀| 亚洲欧美日韩精品久久久久| 在线视频欧美日韩精品| aa级大片欧美| 亚洲国产小视频| 亚洲第一伊人| 欧美高清在线观看| 欧美国产一区视频在线观看| 久久久美女艺术照精彩视频福利播放 | 亚洲成人在线免费| 国产日韩精品久久久| 国产欧美日韩视频| 欧美国产成人精品| 欧美激情五月| 欧美 日韩 国产精品免费观看| 久久精品盗摄| 乱中年女人伦av一区二区| 欧美成在线观看| 欧美区亚洲区| 国产精品女主播在线观看| 国产精品热久久久久夜色精品三区 | 亚洲大片av| 亚洲第一精品夜夜躁人人爽| 国产午夜精品麻豆| 激情综合色综合久久综合| 在线看国产日韩| 亚洲另类一区二区| 亚洲欧美电影在线观看| 欧美专区在线播放| 榴莲视频成人在线观看| 亚洲国产精品一区二区尤物区| 亚洲精品视频在线观看免费| 一本色道综合亚洲| 欧美在线free| 欧美大色视频| 国产精品久久久久免费a∨大胸| 国产亚洲免费的视频看| 亚洲国产欧美日韩另类综合| 亚洲精品一区在线观看| 午夜精品三级视频福利| 久久阴道视频| 亚洲啪啪91| 午夜精品视频网站| 久久综合亚洲社区| 国产精品毛片| 91久久中文| 欧美一区二区三区免费看| 欧美顶级少妇做爰| 亚洲一区欧美激情| 猫咪成人在线观看| 国产美女在线精品免费观看| 在线日韩中文字幕| 欧美一级淫片aaaaaaa视频| 亚洲第一毛片| 亚洲伊人网站| 欧美久久久久久蜜桃| 国产一区二区av| 亚洲视频在线播放| 欧美高清视频在线| 欧美一区二区视频网站| 欧美视频免费看| 亚洲日韩视频| 蜜臀av性久久久久蜜臀aⅴ| 一区二区三区视频免费在线观看| 蜜臀av一级做a爰片久久| 狠狠干综合网|