目前客户的现象很经典, 某一个核cpu打满了!网卡开启了RSS, 每个work都绑定了一个cpu。
使用strace分析的时候,发现使用总是某一个线程被唤醒,然后这个work一直都在处理io事件。--这个问题原因就是惊群导致。详细就不写了,具体看内核就可知。
主要是应用层的问题:
由于代码比较老,里面很多代码都是为了规避某些问题而出现。比如很多读写锁,但是很想不通一个配置更新都是各种加锁,难道此时不是应该使用violate 引用计数吗?
虽然多线程不加锁访问共享资源的话要用原子操作,要注意内存屏障和可见性,防止编译器乱优化和其他线程读到CPU缓存。或者参考shared_ptr的维护生命周期的数据块里的弱引用计数??
业务状态机问题:不说了,涉及到业务。
临时替换文件时;可以用objcopy来剥离debug信息保存; objcopy --strip-debug ./vmlinux.o ;
objcopy 命令主要是移除和添加符号表及调试信息
编译驱动时,make modules_installs INSTALL_MOD_STRIP=1 ;如果设置了 INSTALL_MOD_STRIP 为 1, 那么 mod_strip_cmd = strip --strip-debug
本文章主要记录内容
- 业务响应时间:目前还在继续优化中; 怎样提高 建立连接响应速度?已经业务处理及时响应?
http代理服务器(3-4-7层代理)-网络事件库公共组件、内核kernel驱动 摄像头驱动 tcpip网络协议栈、netfilter、bridge 好像看过!!!! 但行好事 莫问前程 --身高体重180的胖子