1

EPOLLONESHOT を使用してリーダーフォロワー マルチスレッド サーバー プログラムを作成しているため、コードはとても簡単です。

テストを実行すると、サーバーは直接エコーを行います。qps が 150000 に達すると、12 ワーカー スレッドは D ステータスになりますが、サーバーにはメモリ割り当てがなく、ディスクはまったくビジーではありません。

テストクライアントをさらに追加し続けても、サーバーのqpsは上昇せず、150000 qpsのままです。

これは私のサーバーが行うすべてです。テストクライアントとサーバーは同じマシン上にあり、lo (物理ネットワークカードではありません) を介して通信しています。CPU あたりの CPU アイドルは 60 ですが、パフォーマンスはそれ以上向上しません。ボトルネックは何ですか?ここ ?

epoll_wait(4, {{EPOLLIN, {u32=28, u64=28}}}, 1, 1000) = 1 <0.000051>
read(28, "hello world\n", 4096)         = 12 <0.000005>
write(28, "hello world\n", 12)          = 12 <0.000015>
epoll_ctl(4, EPOLL_CTL_MOD, 28, {EPOLLIN|EPOLLONESHOT, {u32=28, u64=4656724694760685596}}) = 0 <0.000033>
epoll_wait(4, {{EPOLLIN, {u32=14, u64=14}}}, 1, 1000) = 1 <0.000038>
read(14, "hello world\n", 4096)         = 12 <0.000005>
write(14, "hello world\n", 12)          = 12 <0.000013>
epoll_ctl(4, EPOLL_CTL_MOD, 14, {EPOLLIN|EPOLLONESHOT, {u32=14, u64=4656724694760685582}}) = 0 <0.000040>
epoll_wait(4, {{EPOLLIN, {u32=15, u64=15}}}, 1, 1000) = 1 <0.000056>
read(15, "hello world\n", 4096)         = 12 <0.000005>
write(15, "hello world\n", 12)          = 12 <0.000008>
epoll_ctl(4, EPOLL_CTL_MOD, 15, {EPOLLIN|EPOLLONESHOT, {u32=15, u64=4656724694760685583}}) = 0 <0.000047>
epoll_wait(4, {{EPOLLIN, {u32=33, u64=33}}}, 1, 1000) = 1 <0.000039>
read(33, "hello world\n", 4096)         = 12 <0.000004>
write(33, "hello world\n", 12)          = 12 <0.000019>
epoll_ctl(4, EPOLL_CTL_MOD, 33, {EPOLLIN|EPOLLONESHOT, {u32=33, u64=4656724694760685601}}) = 0 <0.000039>
epoll_wait(4, {{EPOLLIN, {u32=35, u64=35}}}, 1, 1000) = 1 <0.000042>
read(35, "hello world\n", 4096)         = 12 <0.000005>
write(35, "hello world\n", 12)          = 12 <0.000010>
epoll_ctl(4, EPOLL_CTL_MOD, 35, {EPOLLIN|EPOLLONESHOT, {u32=35, u64=4656724694760685603}}) = 0 <0.000042>
epoll_wait(4, {{EPOLLIN, {u32=8, u64=8}}}, 1, 1000) = 1 <0.000039>
read(8, "hello world\n", 4096)          = 12 <0.000006>
write(8, "hello world\n", 12)           = 12 <0.000007>
epoll_ctl(4, EPOLL_CTL_MOD, 8, {EPOLLIN|EPOLLONESHOT, {u32=8, u64=4656724694760685576}}) = 0 <0.000054>
epoll_wait(4, {{EPOLLIN, {u32=21, u64=21}}}, 1, 1000) = 1 <0.000034>


13283 work      15   0  636m 256m  308 R   19  0.4   4:33.09 server                                                                   
13288 work      15   0  636m 256m  308 D   19  0.4   4:33.27 server                                                                   
13286 work      15   0  636m 256m  308 D   17  0.4   4:32.60 server                                                                   
13287 work      15   0  636m 256m  308 D   17  0.4   4:34.72 server                                                                   
13280 work      15   0  636m 256m  308 D   15  0.4   4:33.20 server                                                                   
13281 work      15   0  636m 256m  308 D   15  0.4   7:50.35 server                                                                   
13282 work      15   0  636m 256m  308 R   15  0.4   4:33.14 server                                                                   
13290 work      15   0  636m 256m  308 R   15  0.4   4:31.80 server                                                                   
13279 work      15   0  636m 256m  308 D   13  0.4   4:24.11 server                                                                   
13285 work      15   0  636m 256m  308 D   13  0.4   4:32.91 server                                                                   
13289 work      15   0  636m 256m  308 D   13  0.4   4:32.34 server                                                                   
13284 work      15   0  636m 256m  308 D   12  0.4   4:31.70 server                                                                   
14042 work      16   0  2380  344  280 S   10  0.0   1:46.98 test_long_conn                                                           
 6403 work      16   0  3692  580  416 S   10  0.0   0:00.12 grep                                                                     
13915 work      16   0  2380  344  280 S    8  0.0   1:47.42 test_long_conn                                                           
13930 work      16   0  2380  344  280 R    8  0.0   1:49.59 test_long_conn                                                           
13945 work      16   0  2380  344  280 S    8  0.0   1:48.38 test_long_conn                                                           
13841 work      16   0  2380  344  280 S    6  0.0   1:36.61 test_long_conn                                                           
13847 work      16   0  2380  344  280 S    6  0.0   1:49.55 test_long_conn                                                           
13848 work      16   0  2380  344  280 S    6  0.0   1:48.75 test_long_conn                                                           
13849 work      16   0  2380  344  280 S    6  0.0   1:48.45 test_long_conn                                                           
13850 work      16   0  2380  344  280 S    6  0.0   1:48.74 test_long_conn                                                           
13913 work      16   0  2380  344  280 R    6  0.0   1:47.50 test_long_conn   
4

0 に答える 0