- 博客(101)
- 资源 (28)
- 收藏
- 关注
原创 RDMA在典型场景下的技术应用分析与探索
RDMA技术因其低延迟、bypass os/cpu等优势在数据中心内被广泛应用,本文围绕redis rdma进行方案分析及测试,再结合tensorflow、nccl、brpc等开源方案总结RDMA在典型业务场景下的实践方案。
2023-08-11 11:16:09
1834
原创 veth网卡的多队列及RPS
3.10内核下容器使用的veth网卡,默认开启的是一个队列,导致在某些单线程多TCP链接的应用场景下,出现某个CPU软中断高的情况。之前处理的方案一直是开启这个veth网卡的RPS,让其在多流场景下可以去分散到其它CPU上,将某个CPU上的软中断降低。其中,skb_get_rx_queue可以通过veth的多队列,拿到不同的队列,但是下面的一个流程,是要配合rps去使用的,所以当前3.10.957的内核即使veth使用了多队列,若没有开rps的话,仍然是返回到当前cpu。带着这个问题看一下内核的处理流程。
2023-05-18 16:13:31
1164
原创 socket send:broken pipe
tcp socket在调用send接口时,出现了程序出现:Program received signal SIGPIPE, Broken pipe的异常。说明程序收到了SIGPIPE的信号。一般网上的处理手段是signal(SIGPIPE, SIG_IGN);忽略这个信号,但实际测试过程中貌似没太生效,这块没具体研究。还是直接分析下原因,为何sendret = send(sockfd, sendmsg, strlen(sendmsg), 0);这样一段代码会引起程序收到SIGPIPE信号呢?
2022-04-23 21:28:20
3759
1
原创 centos上编译nbd.ko
centos7.6默认的内核没有nbd.ko模块,在yum源上也找不到,只能手动从源码编译了。参考:在 CentOS 中安装 nbd.ko 驱动模块 - ZVampirEM's Blogcentos7单独编译nbd内核模块 - 武汉-磨渣 - 博客园安装kernel-src包后,进入/root/rpmbuild/SOURCES/linux-3.10.0-957.27.2.el7/drivers/block目录编译: block]# make CONFIG_BLK_DEV_NBD
2022-04-21 21:00:29
1157
原创 TCP未监听端口收到报文,为何会回应reset报文
说下结论:linux下,在某个tcp未监听端口收到报文时,会回复reset报文,代码层面初步分析如下。tcp_v4_rcv中调用__inet_lookup_skb查找报文对应得socket,当没有socket时,会走到“no_tcp_socket”流程,该流程会发送reset报文。lookup:sk = __inet_lookup_skb(&tcp_hashinfo, skb, __tcp_hdrlen(th), th->source,...
2021-12-08 20:10:23
2311
原创 Linux下获取cpu温度
大致strace跟踪了下sensors命令,发现是读取类似/sys/class/hwmon/hwmon1/temp1_input中的值,再结合google下的如下几篇文章:https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface总结如下:# ls -al /sys/class/hwmon/total 0drwxr-xr-x 2 root root 0 Aug 11 10:09 .drwxr-xr-x 64 root r
2021-08-11 10:24:27
16090
原创 支持vhost-net类型的多队列tap虚拟网卡
参考:【1】vhost(vhost-net): 一种 virtio 高性能的后端驱动实现https://cloud.tencent.com/developer/article/1075600【2】Linux kernel Vhost-net 和 Virtio-net代码详解https://www.cnblogs.com/scottieyuyang/p/6053376.html1.问题描述使用普通virtio驱动的tap网卡时,tap虚拟卡是xxxx-vif-agent网络插件创建的...
2021-07-02 09:42:09
1624
2
原创 ifb与tc police对接收方向限速性能比较
参考:【1】https://www.cnblogs.com/xingmuxin/p/10826703.html【2】https://blog.youkuaiyun.com/dog250/article/details/40680765 dog250大神对ifb的理解1.使用ifb进行容器的出向限速 创建ifb,并mirror流量至ifb网卡上,限制发送侧5G的发送流量 modprobe ifb //支持参数,默认创建ifbx网卡的数目 ifconfig ifb1 up ...
2021-05-20 21:40:47
2360
原创 【Opencontrail】对接k8s基本原理
Opencontrail基于CNI规范实现了自己的CNI插件,Kubelet在调用CNI接口时调用SDN-CNI-Plugin生成对应的veth pair容器端口,veth一端在Pod中,另一端在Opencontrail的SDN-NVE-Agent中,所以Pod的所有通信流量全部被Opencontrail系统接管。同时,Opencontrail使用SDN-Kube-Manager监听K8S A...
2019-07-09 11:03:47
510
原创 【Opencontrail】对接vcenter dpdk模式性能测试
参考【1】https://docs.vmware.com/en/VMware-vCloud-NFV-OpenStack-Edition/3.0/vmwa-vcloud-nfv30-performance-tunning/GUID-2B34AD95-F8F9-4837-9521-D426E2E01B9F.html vcenter中nfv应用的performance调优【2】https:/...
2019-07-09 10:59:11
2101
原创 【Opencontrail】opencontrail对接k8s
1.预置条件部署K8S集群,K8S集群工作正常;2.部署sdn控制器控制器集群和K8S集群,使用新的数据网卡通信,使用fab安装。3.部署sdn前k8s集群配置3.1 修改k8s-master节点配置1) 停掉calicokubectl delete daemonset calico-node -nkube-system将master节点上的相关cali...
2019-07-09 10:39:43
975
原创 haproxy中使用域名作为backend
1)基本条件:haproxy > v1.6 版本(测试时候觉得1.8版本更稳定)2)centos编译haproxy的rpm包https://github.com/DBezemer/rpm-haproxy3)遇到的坑: – dns的返回值不正确,原因是backend的域名填写的有问题rancher的环境中,必须要对域名做如下转换:如desktop-server 需转换为 desk...
2018-04-16 15:43:54
7160
原创 dpdk的ring
struct rte_ring { TAILQ_ENTRY(rte_ring) next; /**< Next in list. */ char name[RTE_RING_NAMESIZE]; /**< Name of the ring. */ int flags; /**< Flags supplied at...
2018-03-28 18:24:07
636
原创 使用DPDK分流不同数据报文至不同虚拟机
使用DPDK分流不同数据报文至不同虚拟机,这样可以使用网卡的RSS或者FDIR等高级功能。上述组网中,是可以实现tap0和tap1之间互通的;(注意点,tap设备up,bridge设备up)tap设备是打开/dev/net/tun文件生成的一种字符设备,同一个tap设备只能被open一次。上图中,DPDK应用程序open并创建一个tap1设备,这样dpdk程序收到报文后,根据分流规则,可以将收到的...
2018-03-13 14:33:46
1943
原创 kvm创建虚机时访问外网
随意创建一个网桥: brctl addbr qemu-br为此网桥创建一个tap:yum install -y tunctltunctl -t vm-ifbrctl addif qemu-br vm-if网桥随便分配一个ip: ifconfig qemu-br 192.168.44.1/24 upiptables: iptables -t nat -
2018-01-29 14:51:23
2273
原创 centos6.9升级内核启动docker时无法冻结
背景及现象:某地超融合项目,客户使用centos6.9时,升级了原生2.6.32的内核版本至4.4.113版本内核。然后客户在此虚机中安装并开启了docker服务。导致在线快照时无法冻结文件系统。 [root@host-172-16-170-171 ~]# cat /proc/self/mountsproc /proc proc rw,relatime 0 0
2018-01-27 15:06:08
833
原创 网卡bond工具
fork from:https://github.com/sivel/bondingmirror at:https://github.com/forsakening/bonding修改后功能如下:1)过滤出系统的网卡,过滤出的网卡类型:非网桥、非loopback、非tap、非pair,暂不支持过滤ovs的网卡2)支持配置没有ip属性的bond(不设置bond的ip)
2018-01-24 09:53:25
990
原创 keepalived增加/删除IP代码层面
网上说是使用ip addr add/del 操作,原理差不多,但实际不是~~参考代码,根据配置文件中的static_addresses配置项,层层查找,发现是使用了netlinkvrrp_handle_ipaddress(vrrp_t * vrrp, int cmd, int type, bool force)netlink_iplist(list ip_list, int
2018-01-24 09:51:41
1298
原创 cron下执行ntpdate出现的问题
ntpdate代码:https://github.com/ntp-project/ntp/tree/stable/ntpdate编译:1)./bootstrap2)autoconf automake configure make,预先安装libtool 问题现象:在v3.2版本超融合中,osd、mon、controller、c
2018-01-24 09:50:54
1221
原创 OSD无法启动恢复
现象: osd无法启动,log里显示加载journal失败,类似如下: 问题原因: 该osd的journal数据损坏,需要重新刷新修复方法: 对该osd的日志盘用dd命令重新覆盖一遍,只需要重写开始的一段,然后重做日志盘。 dd if=/dev/zero of=/dev/sdb4 bs=1M count=1024 #sdb
2018-01-24 09:31:40
2481
转载 Ceph Monitor节点故障处理案例分解
查看ceph健康状态[root@bgw-os-node151 ~]# ceph healthHEALTH_OK[root@bgw-os-node151 ~]# ceph health detailHEALTH_OK[root@bgw-os-node151 ~]# ceph mon state2: 3 mons at{bgw-os-node151=10
2018-01-24 09:25:03
4734
原创 异常断电mysql集群数据库恢复
说明:项目相关,有些命令不一定适用于其他场景,仅供参考20180121日,xxxx项目,超融合异常掉电,导致数据库启动不了。 首先要备份/var/lib/mysql文件夹!!!!恢复:1)不强制恢复180121 20:00:37 mysqld_safe WSREP: Running position recovery with --log_error='/var/lib/mysql//wsrep_...
2018-01-24 09:24:06
5516
1
原创 openstack虚机流量监控demo
1.使用docker镜像在172.16.33.1:docker-registry:5000/ntopng-zx:v1.1使用方式:1)在待监控虚机所在的物理机上执行:docker run --net=host --privileged -ti -p 3000:3000 docker-registry:5000/ntopng-zx:v1.1 bash2)进入容器后,执行:/t
2017-12-20 10:44:29
3736
原创 Linux线程qps测试
实验环境OS : Centos 7.1Kernel: 4.6.0CPU : Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz (开启超线程)MEM : 48G DDR3 伪代码//任务模式long long g_SleepIoCount=0;long long g_SleepIoLastCount=0;void I
2017-09-25 15:21:52
3083
转载 MTU 巨帧 TCP/UDP与分片
常常见到交换机和网卡说明中提到支持Jumbo Frame,但我一直对以太网的Jumbo Frame(巨帧)如何使用不太理解,今日在网上找到2则现摘录下来,相信看了以后大家会有收获。 ---- 这是一种厂商标准的超长帧格式,专门为千兆以太网而设计,目前还没有获得IEEE标准委员会的认可。以太网标准的最大帧长度为1518字节,而Jumbo Frame的长度各厂商有所不同,从9000字节~64000字节
2016-02-16 10:30:49
20266
转载 wireshark基本用法及过虑规则
Wireshark 基本语法,基本使用方法,及包过虑规则:1.过滤IP,如来源IP或者目标IP等于某个IP例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IPlinux上运行的wireshar
2015-11-04 19:35:59
605
转载 讲述Linux HUP信号的干扰问题
我们知道,当用户注销(logout)或者网络断开时,终端会收到Linux HUP信号(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略Linux HUP信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。AD:在向大家详细介绍Linux HUP信号之前,首先让大家了解下Linux HUP信号,然后全面介绍Li
2015-09-25 10:06:00
2308
转载 Linux 大页面使用与实现简介
为了减少 TLB Miss 对应用程序性能的影响,Linux 内核支持以 2MB 作为物理页面分页的基本单位。 Linux 内核采用基于 Hugetlb 伪文件系统的实现方式支持大页面,虽然较大地提升了应用程序的性能,但由于不能做到完全的透明性,对应用程序的移植带来了挑战。本文对 Linux 大页面机制的使用和实现进行了简要的介绍和分析。 引言随着计算需求规模的不断增大,应用程序对内存
2015-09-09 10:12:09
886
转载 SDP协议分析
一、SDP协议介绍SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围。SDP 不支持会话内容或媒体编码的协商,所以在流
2015-09-07 14:31:15
1598
原创 Linux系统中添加IPv6模块(TQ2440开发板)
TQ2440开发板自带的内核镜像并没有支持IPv6协议栈,但可以2种方法来使内核支持:1)重新配置内核,编译镜像,使之支持IPv62)编译IPv6协议栈模块,利用insmod方式加载模块在没有支持IPv6协议栈之前,对网卡添加IPv6地址是不被允许的:1)配置内核,编译镜像:2)在内核源码下配置为模块方式,编译模块make modules(前提是要用ma
2013-12-18 13:01:09
7478
翻译 Essential pre-reading for life with LFS
Essential pre-reading for life with LFS.AUTHOR: Richard A Downing FBCS CITP DATE: 2004-12-28LICENSE: Creative Commons - Attribution-NonCommercial-ShareAlike 2.0SYNOPSIS: Essential pre-readin
2013-12-17 11:02:33
1215
原创 Linux内核kobject模型(添加kobject对象,模拟kobject状态变化)
#include #include #include #include #include #include static struct kobject *parent;static struct kobject *child;static struct kset *c_kset;static unsigned long
2013-11-18 13:59:57
1071
原创 TQ2440开发板的使用技巧
Telnet访问TQ2440开发板,可以代替串口成为终端1.通过telnet命令 telnet IP(TQ2440),输入root用户名和密码2.或者是通过secureCRT直接进行telnet访问利用ftp服务在Linux下访问TQ2440开发板:1.TQ2440下添加root用户的密码 passwd命令,ftp服务需要root用户名和密码2.Linux下ftp
2013-11-03 22:04:00
1501
原创 简单的IPv6 UDP/TCP socket编程 -- 两台Linux实现简单的ipv6通信
1.两台linux用网线直接相连2.分别配置两台linux的ipv6地址为:ifconfig eth0 add 2001:da8:e000::1:1:1ifconfig eth0 add 2001:da8:e000::1:1:2如下所示:[root@EmbedSky /]# ifconfigeth0 Link encap:Ethernet HWaddr 10
2013-11-03 16:58:03
14357
3
原创 windows xp/Linux下使用ipv6服务
具体参考:http://isp.aptg.com.tw/ipv6/ipv6-tb-1.html这里面有详细的使用方法介绍,主要是利用udp隧道实现ipv6 over ipv4
2013-10-31 23:19:02
903
原创 lwip中ip层的实现浅析
以下部分来源2001版,可能已经不适用于当前版本的lwip,但是作用于参考足够了~--------------------------------------------------------LwIP 仅实现了 IP 层大部分的基本功能,能够发送、接收以及转发信息包,但是不能接 收和发送 IP 分片包,也不能处理携带 IP 参数选项的信息包。不过对大多数的应用来说,这 不会引起任何问题。
2013-10-02 22:30:21
4404
原创 关于网络序
网络序是大字序:0x12345678低 ---------------> 高 (address ])转换为网络序address [0] = 0x12 address [1] = 0x34 ......假设从网络上获取一IP地址为IP[0] = 0x12 ; IP[1] = 0x34; IP[2] = 0x56; IP[3] = 0x78在大端机器上获得的地址就是为int IP
2013-10-02 20:26:35
1031
原创 lwip-1.3.2中sys.c的分析
sys_arch:sys.c:系统抽象层,其中会调用和os相关的部分,如sys_arch_timeouts等,在lwip中是以sys_arch_命名开头的sys_arch_timeouts/* BEGIN: Added by zhengxiang, 2013/10/2 PN:lwip_comment *//* 获取lwip进程定时器链表,需要移植 *//* END: A
2013-10-02 15:07:23
2608
原创 Ethernet II 和802.3
Ethernet V2比IEEE802.3更适合于传输大量的数据,但Ethernet V2缺乏数据链路层的控制,不利于传输需要严格传输控制的数据,这也正是IEEE802.3的优势所在,越需要严格传输控制的应用,越需要用 IEEE802.3或SNAP来封装,但IEEE802.3也不可避免的带来数据装载量的损失,因此该格式的封装往往用在较少数据量承载但又需要严格控制传输的应用中。在实际应用中,
2013-10-01 01:53:20
7450
原创 华为9月面试总结
面的岗位是网络操作系统类,主要的问题如下几个1, 什么是总线;2. 什么是操作系统,包括哪些部分?3. 什么是嵌入式操作系统;4. 什么是实时操作系统,如何实现实时?5. TCP/IP是什么?MAC层是什么,有什么作用?数据链路层与MAC、LLC之间关系?
2013-09-30 00:51:07
1924
linux ipv6简单tcp/udp socket通信
2013-11-04
一种简陋的CC1100/CC1101主从通信协议
2013-06-18
U-Boot-1.16编译过程完全分析(网页文件)
2013-06-04
TQ2440-S3C2440-裸机ARM软中断
2013-06-01
TQ2440-S3C2440-裸机UART测试程序
2013-05-31
TQ2440裸机代码(定时器中断)
2013-05-31
TQ2440裸机中断(外部中断)
2013-05-31
TQ2440启动代码
2013-05-31
TQ2440启动代码测试--流水灯
2013-05-30
51单片机C语言编程入门(中科大)
2013-05-27
Accelerated C++中文版(扫描版)
2013-05-23
圈圈教你玩USB
2013-05-15
bacnet-stack-0.8.0
2013-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人