2024年11月8日

libvirt: 配置virt-net tap上网

摘要: 在libvirt通过修改xml来配置上网有一点复杂,而且网上相关的资料很少不知道其他人都是怎么上网的。参考libvirt文档记录一下如果使用自己创建的tap设备上网。 使用预先创建的tap设备上网 首先得有一个网桥,我一般用docker0当作网桥,只需装一个docker即可。有了网桥之后可以创建一个 阅读全文

posted @ 2024-11-08 13:52 半山随笔 阅读(0) 评论(0) 推荐(0) 编辑

2024年11月7日

futex系统调用分析

摘要: futex - fast user-space locking futex是一个内核态和用户态共同参与实现的锁。它基于一个观察,大多数情况下可能并没有锁的争抢,所以没有必要每次都陷入内核态,可以首先在用户态查询一下锁是否被其他进程/线程占用,如果没有占用可直接返回,无需调用futex syscall 阅读全文

posted @ 2024-11-07 16:35 半山随笔 阅读(2) 评论(0) 推荐(0) 编辑

记录一次性能问题的解决

摘要: 最近在用schbench测试机器调度性能。测试是绑定在一个socket上进行的。当worker线程数等于socket包含的cpu数时耗时会发生一次跳变。主要是futex wake的时候执行时间变长。开始怀疑是kernel的执行逻辑发生了变化,但查看ftrace后发现没有变化。第二个怀疑点是kerne 阅读全文

posted @ 2024-11-07 12:45 半山随笔 阅读(1) 评论(0) 推荐(0) 编辑

libvirt/qemu设置numa distance

摘要: qemu可以模拟numa,设置numa内的memory,cpu,numa间distance。 qemu-system-x86_64 --help | grep numa -numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,in 阅读全文

posted @ 2024-11-07 11:10 半山随笔 阅读(0) 评论(0) 推荐(0) 编辑

2024年11月6日

schbench源码分析

摘要: schbench是meta开发的linux调度器benchmark工具,用来测试线程wakeup到占有cpu之间的延迟。 如何使用schbench? schbench -t 2 -m 1 在schbench中有两个重要的概念,woker线程和message线程。message线程由主线程创建,wor 阅读全文

posted @ 2024-11-06 12:09 半山随笔 阅读(1) 评论(0) 推荐(0) 编辑

2024年10月31日

bcc测量函数执行时间

摘要: 获取函数的执行时间对性能分析十分有益,这里给出一个示例来测量kernel 函数的执行时间。 kprobe可用来在函数执行的开始加入探测点,kretprobe可以在函数返回前加入探测点,分别在这个两个探测获取时间,其差值可以作为函数的执行时间。相对ftrace,这种方式要精确很多。下面是一个例子,测量 阅读全文

posted @ 2024-10-31 11:47 半山随笔 阅读(8) 评论(0) 推荐(0) 编辑

2024年10月26日

tlb shootdown

摘要: 如果一个进程被调度出去,相应的该进程的页表项应该从tlb中刷掉。于是tlb在每次进程换入的时候都是miss的。为了解决这个问题,芯片设计厂商引入了pcid/asid这种技术。通过在tlb上给每个进程增加标识,进程在调度出去的时候无需刷tlb,这样在切入的时候tlb还在。尽管这会提升tlb的命中率但同 阅读全文

posted @ 2024-10-26 19:44 半山随笔 阅读(4) 评论(0) 推荐(0) 编辑

2024年9月26日

在centos 8上编译qemu

摘要: 说实话,如果不是有些机器在用centos,真的不想用它,生态不好,没有ubuntu那么方便。真不知道为啥那么多人用。希望centos赶紧消失!!! qemu也是个挺难编译的东西,依赖的库太多,很多比较小众,对版本还有要求。这里只有一个建议,编译跟centos匹配的qemu。qemu在演进,cento 阅读全文

posted @ 2024-09-26 19:06 半山随笔 阅读(19) 评论(0) 推荐(0) 编辑

2024年9月14日

测量读写msr寄存器的耗时

摘要: msr寄存器的读写有两个指令rdmsr和wrmsr。他们可以用来读写一些系统相关的寄存器。格式是: 首先向ecx写入msr寄存器的地址,这要查一下手册。对于rdmsr,会将读到的信息,一个64bit数据,高32bit放到edx,低32存访到eax。对于wrmsr,除了向ecx写入msr寄存器的地址, 阅读全文

posted @ 2024-09-14 18:16 半山随笔 阅读(18) 评论(0) 推荐(0) 编辑

2024年9月11日

记一次性能分析过程

摘要: 初入性能分析领域,还是一个小学生。记录一下小学生的分析过程。 问题的起因 在一台服务器上测试specjbb。如果使用cgroup限制4个cpu,而分配cpuset为8个cpu(简写成4/8)性能会很差,而4/7,5/8性能会好很多。 使用perf top,perf sched等观察,并没有发现有用的 阅读全文

posted @ 2024-09-11 19:20 半山随笔 阅读(7) 评论(0) 推荐(0) 编辑

导航