1.for循环中提高性能
void process_data(int *data, int size) {
int i;
for (i = 0; i < size - 3; i += 4) {
data[i] = data[i] * 2;
data[i + 1] = data[i + 1] * 2;
data[i + 2] = data[i + 2] * 2;
data[i + 3] = data[i + 3] * 2;
}
for (; i < size; i++) {
data[i] = data[i] * 2;
}
}
2.修改内核缓冲区
zxk@zxk:~/code/zxk_work$ cat /proc/sys/net/core/rmem_default
212992
zxk@zxk:~/code/zxk_work$ cat /proc/sys/net/core/wmem_default
212992
内核缓冲区太小的时候,大流量收发的时候会出现丢包
sudo sysctl -w net.core.rmem_max=8388608
sudo sysctl -w net.core.wmem_max=8388608
永久修改
sudo sh -c 'echo "net.ipv4.wmem_default=8388608" >> /etc/sysctl.conf'
sudo sysctl -p
修改网卡队列大小
问题描述:网卡转发的时候ifconfig看到网卡RX packet很多,但是转发出去的tx packet很
少,很明显发生了丢包,此时设置网卡队列大小解决了
ip link set dev p4p1 txqueuelen 4096
关闭网卡checksum
问题描述:iperf3 打流tcp时,A-->B 速率900M, B-->A 速度3M。抓包只看到有重传和乱序,无其他明显问题。
关闭B网卡上的tx checksum解决:ethtool --offload vnet9 tx off