当前位置: 首页 > news >正文

北京网站建设公司东为google搜索引擎入口 镜像

北京网站建设公司东为,google搜索引擎入口 镜像,提高网站建设水平意见方案,自己怎么做云购网站背景: 3.10内核下容器使用的veth网卡,默认开启的是一个队列,导致在某些单线程多TCP链接的应用场景下,出现某个CPU软中断高的情况。之前处理的方案一直是开启这个veth网卡的RPS,让其在多流场景下可以去分散到其它CPU上…

背景:

3.10内核下容器使用的veth网卡,默认开启的是一个队列,导致在某些单线程多TCP链接的应用场景下,出现某个CPU软中断高的情况。之前处理的方案一直是开启这个veth网卡的RPS,让其在多流场景下可以去分散到其它CPU上,将某个CPU上的软中断降低。

偶然发现veth也支持多队列,那是不是可以直接利用多队列去分流,不需要手动开启RPS了呢?带着这个问题看一下内核的处理流程。如下。

上层协议栈

->__dev_queue_xmit

   - >netdev_pick_tx  – 这里会通过skb_tx_hash获取发送队列的id

   - > dev_hard_start_xmit->xmit_one → netdev_start_xmit →ndo_start_xmit → veth_xmit

在veth_xmit中

→dev_forward_skb

   → netif_rx_internal

       → get_rps_cpu

最终调用get_rps_cpu接口:

 

其中,skb_get_rx_queue可以通过veth的多队列,拿到不同的队列,但是下面的一个流程,是要配合rps去使用的,所以当前3.10.957的内核即使veth使用了多队列,若没有开rps的话,仍然是返回到当前cpu。

附一个stap脚本:

# cat veth_rps.stp 
#!/usr/bin/stap --all-modules
%{
#include <linux/kernel.h>
#include <linux/net.h>
#include <linux/textsearch.h>
#include <net/checksum.h>
#include <linux/dma-mapping.h>
#include <linux/netdev_features.h>
#include <linux/skbuff.h>
#include <uapi/linux/ip.h>
#include <uapi/linux/udp.h>
#include <uapi/linux/tcp.h>
%}function get_packet_info:string(skb:long)
%{int ret=-1;unsigned int src_port = 0;unsigned int dest_port = 0;struct udphdr *udp_header;struct tcphdr *tcp_header;struct sk_buff *skb= (struct sk_buff *)STAP_ARG_skb;struct iphdr *ip_header;unsigned int src_ip=0,dest_ip=0;if(!skb){goto EXIT_F;}ip_header = (struct iphdr *)skb_network_header(skb);if(!ip_header){goto EXIT_F;}src_ip = (unsigned int)ip_header->saddr;dest_ip = (unsigned int)ip_header->daddr;
EXIT_F:snprintf(STAP_RETVALUE, MAXSTRINGLEN, "%d.%d.%d.%d",(unsigned int)((unsigned char *)&src_ip)[0],(unsigned int)((unsigned char *)&src_ip)[1],(unsigned int)((unsigned char *)&src_ip)[2],(unsigned int)((unsigned char *)&src_ip)[3]);
%}#probe kernel.trace("set_rps_cpu") {
probe kernel.statement("get_rps_cpu@net/core/dev.c:3651") {SrcIp=get_packet_info($skb)if(SrcIp==@1){printf("=== %s   queid:  %d, cpu:  %d  , rps map:%x ===\n", SrcIp, $skb->queue_mapping, $cpu, $rxqueue->rps_flow_table)print_backtrace()}}

可以看见queid是散列的,但是cpu仍然是-1,最终和调用者的cpu保持一致。 

http://www.dinnco.com/news/39758.html

相关文章:

  • 企业做网站的步骤与做网站注意事项关键字排名优化工具
  • 上海建筑设计院有限公司停工移动端关键词优化
  • 西藏自治区交通厅公路基本建设工程质量监督站网站重庆森林讲的什么内容
  • 用什么软件做网站交互效果杭州seo网站优化
  • flash网站的制作产品推广方案怎么做
  • 电商网站用什么做最好长沙百度推广运营公司
  • 亚购物车功能网站怎么做的网站优化的方式有哪些
  • 江苏易销 网站建设广点通广告投放平台登录
  • 网站推广方案怎么写的东莞做网站的公司有哪些
  • 成功的微网站备案查询站长之家
  • 招商加盟网站系统网址缩短
  • 论文中网站数据则呢做文献参考百度快速排名 搜
  • 简单网站制作实例营销计划怎么写
  • 如何做网站客户端seo引擎优化平台培训
  • 做ppt找图片在哪个网站我在百度下的订单如何查询
  • 潜江资讯seo网站优化报价
  • 济南城乡建设官方网站电商培训学校
  • 建设了湛江市志愿服务网站口碑营销方案
  • 淘宝刷单网站制作电商运营多少钱一个月
  • b2c网站程序成人专业技能培训机构
  • 赚钱一天赚300到500平台山西seo基础教程
  • 苏州企业网站设计方案线上营销怎么做
  • 做淘宝客网站制作教程视频教程app推广方式有哪些
  • 个人如何免费建网站太原竞价托管公司推荐
  • html5开发环境seoul是什么品牌
  • 怎样做购物网站seo关键词优化最多可以添加几个词
  • 网站开发人员招聘软文写作经验
  • 网站建设的毕业设计选题管理系统保定百度seo公司
  • wordpress动漫主题曲杭州百度快照优化排名推广
  • 做网站建设需要做哪些工作怎么创建网站链接