{"id":10008021,"date":"2023-06-30T16:59:43","date_gmt":"2023-06-30T08:59:43","guid":{"rendered":"https:\/\/ityet.com\/?p=10008021"},"modified":"2023-06-30T16:59:43","modified_gmt":"2023-06-30T08:59:43","slug":"%e7%8b%82%e6%94%b6-3-2k-star%ef%bc%81%e7%99%be%e5%ba%a6%e5%bc%80%e6%ba%90%e5%8e%8b%e6%b5%8b%e5%b7%a5%e5%85%b7%ef%bc%8c%e5%8f%af%e6%a8%a1%e6%8b%9f%e5%87%a0%e5%8d%81%e4%ba%bf%e7%9a%84%e5%b9%b6%e5%8f%91","status":"publish","type":"post","link":"https:\/\/itmax.cn\/?p=10008021","title":{"rendered":"\u72c2\u6536 3.2k star\uff01\u767e\u5ea6\u5f00\u6e90\u538b\u6d4b\u5de5\u5177\uff0c\u53ef\u6a21\u62df\u51e0\u5341\u4ebf\u7684\u5e76\u53d1\u573a\u666f\uff0c\u592a\u5f3a\u608d\u4e86\uff01"},"content":{"rendered":"<p>dperf \u662f\u4e00\u6b3e\u57fa\u4e8e DPDK \u7684 100Gbps \u7f51\u7edc\u6027\u80fd\u548c\u8d1f\u8f7d\u6d4b\u8bd5\u8f6f\u4ef6\uff0c\u80fd\u591f\u6bcf\u79d2\u5efa\u7acb\u5343\u4e07\u7ea7\u7684 HTTP \u8fde\u63a5\u3001\u4ebf\u7ea7\u522b\u7684\u5e76\u53d1\u8bf7\u6c42\u548c\u6570\u767e Gbps \u7684\u541e\u5410\u91cf\u3002<\/p>\n<h2>\u4f18\u70b9<\/h2>\n<h3>\u6027\u80fd\u5f3a\u5927\uff1a<\/h3>\n<ul>\n<li>\u57fa\u4e8e DPDK\uff0c\u4f7f\u7528\u4e00\u53f0\u666e\u901a x86 \u670d\u52a1\u5668\u5c31\u53ef\u4ee5\u4ea7\u751f\u5de8\u5927\u7684\u6d41\u91cf\uff1a\u5343\u4e07\u7ea7\u7684 HTTP \u6bcf\u79d2\u65b0\u5efa\u8fde\u63a5\u6570\uff0c\u6570\u767e Gbps \u7684\u5e26\u5bbd\uff0c\u51e0\u5341\u4ebf\u7684\u5e76\u53d1\u8fde\u63a5\u6570<\/li>\n<\/ul>\n<h3>\u7edf\u8ba1\u4fe1\u606f\u8be6\u7ec6\uff1a<\/h3>\n<ul>\n<li>\u80fd\u591f\u8f93\u51fa\u8be6\u7ec6\u7684\u7edf\u8ba1\u4fe1\u606f\uff0c\u5e76\u4e14\u8bc6\u522b\u6bcf\u4e00\u4e2a\u4e22\u5305<\/li>\n<\/ul>\n<h3>\u4f7f\u7528\u573a\u666f\u4e30\u5bcc\uff1a<\/h3>\n<ul>\n<li>\u53ef\u7528\u4e8e\u5bf9\u56db\u5c42\u8d1f\u8f7d\u5747\u8861\u7b49\u56db\u5c42\u7f51\u5173\u8fdb\u884c\u6027\u80fd\u538b\u529b\u6d4b\u8bd5\u3001\u957f\u7a33\u6d4b\u8bd5<\/li>\n<li>\u53ef\u7528\u4e8e\u5bf9\u4e91\u4e0a\u865a\u62df\u673a\u7684\u7f51\u7edc\u6027\u80fd\u8fdb\u884c\u6d4b\u8bd5<\/li>\n<li>\u53ef\u7528\u4e8e\u5bf9\u7f51\u5361\u6027\u80fd\u3001CPU \u7684\u7f51\u7edc\u62a5\u6587\u5904\u7406\u80fd\u529b\u8fdb\u884c\u6d4b\u8bd5<\/li>\n<li>\u538b\u6d4b\u573a\u666f\u4e0b\uff0c\u53ef\u4f5c\u4e3a\u9ad8\u6027\u80fd\u7684 HTTP Server \u6216 HTTP Client \u5355\u72ec\u4f7f\u7528<\/li>\n<\/ul>\n<h2>\u6027\u80fd<\/h2>\n<h3>HTTP \u6bcf\u79d2\u65b0\u5efa\u8fde\u63a5\u6570<\/h3>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Client Cores<\/th>\n<th align=\"left\">Server Cores<\/th>\n<th align=\"left\">HTTP CPS<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"left\">1<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">2,101,044<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">2<\/td>\n<td align=\"left\">2<\/td>\n<td align=\"left\">4,000,423<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">4<\/td>\n<td align=\"left\">4<\/td>\n<td align=\"left\">7,010,743<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">6<\/td>\n<td align=\"left\">6<\/td>\n<td align=\"left\">10,027,172<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>HTTP \u541e\u5410<\/h3>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Client Cores<\/th>\n<th align=\"left\">Server Cores<\/th>\n<th align=\"left\">RX(Gbps)<\/th>\n<th align=\"left\">TX(Gbps)<\/th>\n<th align=\"left\">Client CPU Usage(%)<\/th>\n<th align=\"left\">Server CPU Usage(%)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"left\">1<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">18<\/td>\n<td align=\"left\">18<\/td>\n<td align=\"left\">60<\/td>\n<td align=\"left\">59<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">2<\/td>\n<td align=\"left\">2<\/td>\n<td align=\"left\">35<\/td>\n<td align=\"left\">35<\/td>\n<td align=\"left\">60<\/td>\n<td align=\"left\">59<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">4<\/td>\n<td align=\"left\">4<\/td>\n<td align=\"left\">46<\/td>\n<td align=\"left\">46<\/td>\n<td align=\"left\">43<\/td>\n<td align=\"left\">43<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>HTTP \u5e76\u53d1\u8fde\u63a5\u6570<\/h3>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Client Cores<\/th>\n<th align=\"left\">Server Cores<\/th>\n<th align=\"left\">Current Connections<\/th>\n<th align=\"left\">Client CPU Usage(%)<\/th>\n<th align=\"left\">Server CPU Usage(%)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"left\">1<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">100,000,000<\/td>\n<td align=\"left\">34<\/td>\n<td align=\"left\">39<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">2<\/td>\n<td align=\"left\">2<\/td>\n<td align=\"left\">200,000,000<\/td>\n<td align=\"left\">36<\/td>\n<td align=\"left\">39<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">4<\/td>\n<td align=\"left\">4<\/td>\n<td align=\"left\">400,000,000<\/td>\n<td align=\"left\">40<\/td>\n<td align=\"left\">41<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>UDP TX PPS<\/h3>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Client Cores<\/th>\n<th align=\"left\">TX MPPS<\/th>\n<th align=\"left\">Client CPU Usage(%)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"left\">1<\/td>\n<td align=\"left\">15.96<\/td>\n<td align=\"left\">95<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">2<\/td>\n<td align=\"left\">29.95<\/td>\n<td align=\"left\">95<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">4<\/td>\n<td align=\"left\">34.92<\/td>\n<td align=\"left\">67<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">6<\/td>\n<td align=\"left\">35.92<\/td>\n<td align=\"left\">54<\/td>\n<\/tr>\n<tr>\n<td align=\"left\">8<\/td>\n<td align=\"left\">37.12<\/td>\n<td align=\"left\">22<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>\u6d4b\u8bd5\u73af\u5883\u914d\u7f6e<\/h2>\n<p>dperf \u7684\u4ee5\u4e0a\u6027\u80fd\u6570\u636e\uff0c\u57fa\u4e8e\u4e0b\u9762\u7684\u914d\u7f6e\u6d4b\u8bd5\u5f97\u5230\uff1a<\/p>\n<ul>\n<li>\u5185\u5b58: 512GB(\u5927\u9875 100GB)<\/li>\n<li>\u7f51\u5361: Mellanox MT27710 25Gbps * 2<\/li>\n<li>\u5185\u6838: 4.19.90<\/li>\n<\/ul>\n<h2>\u7edf\u8ba1\u6570\u636e<\/h2>\n<p>dperf \u6bcf\u79d2\u8f93\u51fa\u591a\u79cd\u7edf\u8ba1\u6570\u636e\uff1a<\/p>\n<ul>\n<li>TPS, CPS, \u5404\u79cd\u7ef4\u5ea6\u7684 PPS<\/li>\n<li>TCP\/Socket\/HTTP \u7ea7\u522b\u7684\u9519\u8bef\u6570<\/li>\n<li>\u4e22\u5305\u6570<\/li>\n<li>\u6309\u7167 TCP Flag \u5206\u7c7b\u7684\u62a5\u6587\u91cd\u4f20\u6570<\/li>\n<\/ul>\n<pre><code>seconds 22                 cpuUsage 52  \npktRx   3,001,058          pktTx    3,001,025          bitsRx   2,272,799,040      bitsTx  1,920,657,600      dropTx  0  \narpRx   0                  arpTx    0                  icmpRx   0                  icmpTx  0                  otherRx 0          badRx 0  \nsynRx   1,000,345          synTx    1,000,330          finRx    1,000,350          finTx   1,000,350          rstRx   0          rstTx 0  \nsynRt   0                  finRt    0                  ackRt    0                  pushRt  0                  tcpDrop 0  \nskOpen  1,000,330          skClose  1,000,363          skCon    230                skErr   0  \nhttpGet 1,000,345          http2XX  1,000,350          httpErr  0  \nierrors 0                  oerrors  0                  imissed  0  <\/code><\/pre>\n<h2>\u5f00\u59cb\u4f7f\u7528<\/h2>\n<h3>\u8bbe\u7f6e\u5927\u9875<\/h3>\n<pre><code>#\u53c2\u8003\u5982\u4e0b\u53c2\u6570\u7f16\u8f91 '\/boot\/grub2\/grub.cfg'\uff0c\u7136\u540e\u91cd\u542fOS  \nlinux16 \/vmlinuz-... nopku transparent_hugepage=never default_hugepagesz=1G hugepagesz=1G hugepages=8  <\/code><\/pre>\n<h3>\u7f16\u8bd1 DPDK<\/h3>\n<pre><code>#\u7f16\u8f91'config\/common_base'\u6253\u5f00PMD\u5f00\u5173  \n#Mellanox CX4\/CX5 requires 'CONFIG_RTE_LIBRTE_MLX5_PMD=y'  \n#HNS3 requires 'CONFIG_RTE_LIBRTE_HNS3_PMD=y'  \n#VMXNET3 requires 'CONFIG_RTE_LIBRTE_VMXNET3_PMD=y'  \n  \nTARGET=x86_64-native-linuxapp-gcc #or arm64-armv8a-linuxapp-gcc  \ncd \/root\/dpdk\/dpdk-stable-19.11.10  \nmake install T=$TARGET -j16  <\/code><\/pre>\n<h3>\u7f16\u8bd1 dperf<\/h3>\n<pre><code>cd dperf  \nmake -j8 RTE_SDK=\/root\/dpdk\/dpdk-stable-19.11.10 RTE_TARGET=$TARGET  <\/code><\/pre>\n<h3>\u7ed1\u5b9a\u7f51\u5361<\/h3>\n<pre><code>#Mellanox\u7f51\u5361\u8df3\u8fc7\u6b64\u6b65  \n#\u5047\u8bbePCI\u53f7\u662f0000:1b:00.0  \n  \nmodprobe uio  \nmodprobe uio_pci_generic  \n\/root\/dpdk\/dpdk-stable-19.11.10\/usertools\/dpdk-devbind.py -b uio_pci_generic 0000:1b:00.0  <\/code><\/pre>\n<h3>\u542f\u52a8 dperf server<\/h3>\n<pre><code>#dperf server\u76d1\u542c6.6.241.27:80, \u7f51\u5173\u662f6.6.241.1  \n.\/build\/dperf -c test\/http\/server-cps.conf  <\/code><\/pre>\n<h3>\u4ece\u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42<\/h3>\n<pre><code>#\u5ba2\u6237\u7aefIP\u5fc5\u987b\u8981\u5728\u914d\u7f6e\u6587\u4ef6\u7684'client'\u8303\u56f4\u5185  \nping 6.6.241.27  \ncurl http:\/\/6.6.241.27\/  <\/code><\/pre>\n<h3>\u8fd0\u884c\u6d4b\u8bd5<\/h3>\n<p>\u4e0b\u9762\u7684\u4f8b\u5b50\u8fd0\u884c\u4e00\u4e2a HTTP CPS \u538b\u529b\u6d4b\u8bd5\u3002\u5728 server \u7aef\u8fd0\u884c dperf .\/build\/dperf -c test\/http\/server-cps.conf<\/p>\n<pre><code>#\u4ee5\u53e6\u4e00\u53f0\u673a\u5668\u4f5c\u4e3aclient\u7aef\uff0c\u8fd0\u884cdperf  \n.\/build\/dperf -c test\/http\/client-cps.conf  <\/code><\/pre>\n<p>\u5f00\u6e90\u5730\u5740\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=f28%2F5ufLL4siMTAXgkwnPA%3D%3D.EvQhfsudinpuxYSUJpLjHNhhakj3et%2BUQ8v5asnowjU%3D\" rel=\"nofollow\">https:\/\/github.com\/baidu\/dperf<\/a><\/p>\n<p><strong>\u8fd1\u671f\u70ed\u6587\u63a8\u8350\uff1a<\/strong><\/p>\n<p>1.<a href=\"https:\/\/link.segmentfault.com\/?enc=B9FQVAA%2F4WUlptVXhRX7Hw%3D%3D.DG84ZOw%2F47GqMPMk5Dixbg7fl0bjyfzN2ruarRs%2Bx9k%3D\" rel=\"nofollow\">1,000+ \u9053 Java\u9762\u8bd5\u9898\u53ca\u7b54\u6848\u6574\u7406(2022\u6700\u65b0\u7248)<\/a><\/p>\n<p>2.<a href=\"https:\/\/link.segmentfault.com\/?enc=WSPwjiJbzbB4grhat1t0ZQ%3D%3D.t%2B1eC%2FMhbY2gc7bU6Y8ytaEgtjszTy6WWqBfirnhUWQAh33OUctNy2NX9bdsush8t5vjWdERXFOYCnHzE1s2kQ%3D%3D\" rel=\"nofollow\">\u52b2\u7206\uff01Java \u534f\u7a0b\u8981\u6765\u4e86\u3002\u3002\u3002<\/a><\/p>\n<p>3.<a href=\"https:\/\/link.segmentfault.com\/?enc=Ye7MfVuqAdJBjivBmSrbQw%3D%3D.BUeB3Dvpv2PDwyueEXRbFe3oKPVhJoNllnC9rnc850v24ZiMVEe2G092vWOl1Vsa\" rel=\"nofollow\">Spring Boot 2.x \u6559\u7a0b\uff0c\u592a\u5168\u4e86\uff01<\/a><\/p>\n<p>4.<a href=\"https:\/\/link.segmentfault.com\/?enc=b5dAp%2BdIjF7wGn%2BFvmDhCQ%3D%3D.rtF9Xvp42TqzRWkBbr5XW8rG8VCtV%2FM8OxFrNWsJ%2BLj41d5331Lvvj2vPZhdCFqFxDrIWduVKOjBqjIDdC1aCg%3D%3D\" rel=\"nofollow\">\u522b\u518d\u5199\u6ee1\u5c4f\u7684\u7206\u7206\u7206\u70b8\u7c7b\u4e86\uff0c\u8bd5\u8bd5\u88c5\u9970\u5668\u6a21\u5f0f\uff0c\u8fd9\u624d\u662f\u4f18\u96c5\u7684\u65b9\u5f0f\uff01\uff01<\/a><\/p>\n<p>5.<a href=\"https:\/\/link.segmentfault.com\/?enc=5mphoVEqyqEtxLEHjXKn2A%3D%3D.yHowdiPkkJFvebohf5lhjoRKEEPFCjHeAkNQ09cTUzK8czgdJHo5uHGsIx6%2BGMEl6%2FFKEex%2FZQd61ACNQTZAytZ3UQwJB3I09fKloHvFlu4%3D\" rel=\"nofollow\">\u300aJava\u5f00\u53d1\u624b\u518c\uff08\u5d69\u5c71\u7248\uff09\u300b\u6700\u65b0\u53d1\u5e03\uff0c\u901f\u901f\u4e0b\u8f7d\uff01<\/a><\/p>\n<p>\u89c9\u5f97\u4e0d\u9519\uff0c\u522b\u5fd8\u4e86\u968f\u624b\u70b9\u8d5e+\u8f6c\u53d1\u54e6\uff01<\/p>\n<p><a href=\"https:\/\/segmentfault.com\/a\/1190000043955658\">https:\/\/segmentfault.com\/a\/1190000043955658<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>dperf \u662f\u4e00\u6b3e\u57fa\u4e8e DPDK \u7684 100Gbps \u7f51\u7edc\u6027\u80fd\u548c\u8d1f\u8f7d\u6d4b\u8bd5\u8f6f\u4ef6\uff0c\u80fd\u591f\u6bcf\u79d2\u5efa\u7acb\u5343\u4e07\u7ea7\u7684 HTTP  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-10008021","post","type-post","status-publish","format-standard","hentry","category-share"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts\/10008021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10008021"}],"version-history":[{"count":0,"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts\/10008021\/revisions"}],"wp:attachment":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10008021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10008021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10008021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}