/ntohl.jpg

NTOHL

grub更新失败的一个问题

今天在折腾kvm网卡(PCI)直通时,pci detach失败,报错:

error: Operation not supported: neither VFIO nor KVM device assignment is currently supported on this system

遂检查 VT-d(BIOS开启),IOMMU(修改grub参数开启)

epoll 惊群效应实测

惊群效应

惊群简单来说就是多个进程或者线程在等待同一个事件,当事件发生时,所有线程和进程都会被内核唤醒。唤醒后通常只有一个进程获得了该事件并进行处理,其他进程发现获取事件失败后又继续进入了等待状态,在一定程度上降低了系统性能。
常见的惊群问题有两种:
Accept惊群问题,多个accept的进程同时被唤醒,该问题已于 linux2.6 解决,本文不再讨论
Epoll惊群问题,虽然accept惊群问题已被内核解决,但epoll仍旧会触发fd的可读状态,触发读事件

使用google-perftools进行C/C++性能分析

安装libunwind

wget https://github.com/libunwind/libunwind/releases/download/v1.3.0/libunwind-1.3.0.tar.gz --no-check-certificate


tar -xvf libunwind-1.3.0.tar.gz

cd libunwind-1.3.0

./configure

make & make install

 

安装perftool

git clone https://github.com/gperftools/gperftools


cd gperftools/

sh autogen.sh

./configure

make & make install

ln -s /usr/local/lib/libprofiler.so.0 /usr/lib64/libprofiler.so.0 (64位机,32位目录在/usr/lib/)

 

golang panic recover不生效的一个原因

前言:遇到不确定性panic,暂未确定原因,所以通过recover()暂时屏蔽,并打印信息定位
代码存在无法运行到的地方,查看了recover的规则:“程序首先运行panic,出现故障,此时跳转到包含recover()的defer函数执行,recover捕获panic,此时panic就不继续传递.但是recover之后,程序并不会返回到panic那个点继续执行以后的动作,而是在recover这个点继续执行以后的动作”