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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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>
            亚洲特色特黄| 欧美一区二区成人| 国产精品网站视频| 国产精品久久毛片a| 国产精品成人一区二区网站软件 | 欧美在线观看一区二区| 性一交一乱一区二区洋洋av| 亚洲综合电影| 久久久久欧美精品| 欧美不卡视频一区发布| 欧美视频福利| 国产一区二区三区不卡在线观看| 激情文学综合丁香| 亚洲精品一区在线观看| 亚洲私人影院| 久久久久免费| 亚洲国产精品v| 亚洲福利视频二区| 99国产精品私拍| 欧美一区二区日韩一区二区| 麻豆av一区二区三区久久| 欧美人成网站| 狠狠色伊人亚洲综合网站色| 亚洲精品日韩在线观看| 亚洲欧美综合另类中字| 欧美大片一区二区三区| 在线综合亚洲| 欧美11—12娇小xxxx| 国产精品久久久免费| 亚洲成人影音| 久久精品国产77777蜜臀| 亚洲欧洲一区二区天堂久久| 午夜视频久久久久久| 欧美日本簧片| 最新精品在线| 鲁大师成人一区二区三区 | 一区二区av在线| 久久久午夜精品| 亚洲一区区二区| 欧美欧美午夜aⅴ在线观看| 黄色成人在线网址| 欧美中文在线视频| 亚洲素人一区二区| 欧美日韩精品免费观看视一区二区 | 国产一区二区日韩精品欧美精品| 亚洲精品久久久久久久久| 久久精品99| 亚洲一区二区精品在线| 欧美日本韩国一区二区三区| 亚洲国产精品第一区二区三区| 性欧美8khd高清极品| 亚洲另类视频| 欧美经典一区二区三区| 亚洲国产欧美另类丝袜| 久久一区欧美| 久久久999精品免费| 国产午夜久久久久| 欧美在线高清| 欧美一区二区三区四区高清| 国产精品外国| 欧美专区第一页| 亚洲欧美成人网| 欧美午夜视频网站| 亚洲男同1069视频| 亚洲影院一区| 日韩视频免费观看| 亚洲一级片在线观看| 国产精品成人一区二区三区夜夜夜 | 美女视频网站黄色亚洲| 在线观看一区视频| 欧美99久久| 欧美sm视频| 99re视频这里只有精品| 亚洲人成在线观看网站高清| 欧美日韩国产综合视频在线观看中文 | 欧美不卡一区| 99精品国产在热久久婷婷| 亚洲精品字幕| 国产精品实拍| 免费看成人av| 欧美日韩不卡合集视频| 在线亚洲国产精品网站| 亚洲——在线| 一区免费观看| 亚洲精品一区在线| 国产伦精品一区| 免费日韩成人| 欧美丝袜第一区| 久久男女视频| 欧美日韩国产综合视频在线观看中文 | 日韩一区二区福利| 国产精品午夜电影| 免费亚洲电影| 欧美日韩综合不卡| 久久久久久久综合色一本| 美女日韩在线中文字幕| 国产精品99久久久久久人| 欧美一级视频免费在线观看| 亚洲国产日本| 亚洲欧美激情四射在线日| 在线视频国产日韩| 国产精品99久久久久久久久| 激情成人在线视频| 亚洲神马久久| 亚洲精品一区久久久久久| 午夜精品久久久| 99精品福利视频| 久久久久久久网| 亚洲欧美日韩精品| 欧美激情影音先锋| 久久久久国产一区二区三区四区| 欧美高清影院| 久久综合网色—综合色88| 亚洲在线国产日韩欧美| 久久精品一二三| 午夜精品一区二区三区在线视| 蜜臀91精品一区二区三区| 久久av一区二区三区| 国产精品ⅴa在线观看h| 亚洲国产精品一区二区久| 激情五月婷婷综合| 欧美一级夜夜爽| 亚洲欧美精品在线| 欧美日韩国产天堂| 亚洲国产专区校园欧美| 在线观看成人网| 久久国产精品免费一区| 亚洲男同1069视频| 欧美日韩和欧美的一区二区| 免费黄网站欧美| 黄色影院成人| 欧美在线黄色| 欧美亚洲视频一区二区| 欧美日韩精品在线播放| 亚洲黄色成人久久久| 亚洲激情网站| 欧美91视频| 亚洲全部视频| 国产精品你懂的在线| 在线亚洲免费视频| 中日韩美女免费视频网址在线观看 | 国产精品观看| 日韩午夜免费| 一区二区精品国产| 欧美日韩亚洲天堂| 在线视频亚洲| 欧美在线观看网址综合| 国产日韩精品在线| 久久久久久亚洲精品中文字幕| 老司机精品视频一区二区三区| 国产视频一区二区在线观看| 久久av一区二区三区漫画| 麻豆精品一区二区av白丝在线| 国内精品亚洲| 欧美va亚洲va日韩∨a综合色| 欧美丰满少妇xxxbbb| 亚洲精品国产精品国产自| 欧美麻豆久久久久久中文| a91a精品视频在线观看| 性感少妇一区| 亚洲成人在线网站| 欧美黄色aaaa| 亚洲在线不卡| 欧美成人免费观看| 在线亚洲国产精品网站| 国产欧美91| 久久久久久久久久久一区| 亚洲国产国产亚洲一二三| 99精品国产高清一区二区| 欧美新色视频| 欧美一区二区观看视频| 欧美成人中文| 亚洲在线1234| 亚洲最新视频在线| 亚洲天堂激情| 国产精品视频大全| 久久网站免费| 国产精品99久久久久久久久| 久久久久久91香蕉国产| 99精品免费| 狠狠色综合网站久久久久久久| 欧美aa在线视频| 亚洲欧美区自拍先锋| 亚洲第一福利在线观看| 午夜在线精品偷拍| 亚洲人成在线观看一区二区 | 国产自产精品| 欧美日韩免费高清| 久久久久国产一区二区| 一区二区高清| 欧美激情一区二区三区在线| 亚洲欧美日韩一区二区在线 | 亚洲一区亚洲二区| 亚洲福利精品| 国产一区二区三区的电影| 欧美日韩午夜| 欧美国产日本高清在线| 久久久久成人精品免费播放动漫| 国产精品99久久久久久久久| 亚洲高清一区二区三区|