slabinfo 惹的祸

mysql访问延迟问题分析

问题背景

收到数据库同学的问题排查的请求,
同一个数据中心里,dbproxy到mysql的连接失败率偏高,其tcp connect调用的超时时间是20ms+。

Read More

WHAT is TFO

什么是tcp fast open(TFO)

背景

网络上有大量的短连接,传输的数据很少。google统计显示,其访问请求里有30%左右的流量是短连接。

原理

针对tcp 短连接的一个优化。在syn请求里携带请求数据,让server端尽早处理,进而降低一个RTT的延迟。
client端发送时候在syn报文里,增加一个tcp option选项(TFO),server端通过它校验client端的合法性。

Read More

configure rss for ixgbe

配置ixgbe网卡的RSS

1
2
3
4
5
ethtool -K em1 ntuple on
ethtool --show-ntuple em1
ethtool --config-ntuple em1 flow-type tcp4 dst-port 60001 action 1
ethtool --config-ntuple em1 flow-type tcp4 dst-port 60002 action 2
ethtool --show-ntuple em1

Read More

How to use kpatch

搭建kpatch builder

以centos7.2为例。

默认centos7.2的安装的内核版本是3.10.0-327.el7.x86_64,这个内核版本当初是通过gcc 4.8.3编译的。
而centos7.2自带gcc rpm包的版本则是 4.8.5

kpatch build命令执行的时候,首先检查gcc的版本是否一致,
因为两者的版本不一致,所以kpatch build命令会失败。
当然我们可以使用--skip-gcc-check,跳过这个检查,我也测试发现在一些简单补丁下可以打包通过。
但是系统不推荐这样做的,会有一定的风险。

Read More

udp rss hash causes low iperf perforamnce

vxlan下iperf性能问题

VXlan网络下,在两个容器(分别在两个host上)上,使用iperf进行tcp网络性能测试,带宽只能达到3.5Gb/s左右。
而两个容器所在的host机器之间是万兆网络环境,host上的网卡是ixgbe 10G网卡

解决方法

  1. 发送端使用多线程参数 -P

    1
    iperf  -c 192.168.51.2   -P8 -t 1000
  2. 接收端IXGBE网卡RSShash使用hash(SrcIP, DstIP, SrcPort, DstPort)

    1
    ethtool -N em2 rx-flow-hash udp4 sdfn

    Read More

TCP ack study

kernel version v4.5

两个重要并且容易混淆的函数:

  • tcp_v4_rcv
  • tcp_v4_do_rcv

类似于中断处理的上半部和下半部,
tcp的处理分为了的总入口函数是tcp_v4_rcv,
tcp_v4_do_rcv则是真正处理tcp报文,
并传送到用户空间。

其他的像拥塞控制,乱序调整等都在tcp_v4_do_rcv之前被做掉了。

Read More

how does tcp server bind on a socket

bind的port是通过tcp_hashinfo里的bhash管理的。
跟tcp client的端口号管理有一样。

注:bind 系统调用时,还不会把当前的socket挂载到listen队列上,需要等待listen系统调用。
bind系统调用只是把对应的这个端口給占用上了, 其他程序没发bind。

Read More