c/c++
文章平均质量分 51
昨天那个谁谁
这个作者很懒,什么都没留下…
展开
-
MPI并行调试工具mpigdb介绍
利用gdb10.1中引入的多进程支持,实现一个gdb连接到多个gdbserver,并通过gdb的python接口新增自定义gdb命令,如mpib命令为多进程breakpoint,mpic命令是多进程continue,允许用户像操作多线程一样操作多进程调试。于是,大部分人转而使用串行调试工具如ssh+gdb attach或者xterm+gdb,但因为它们串行调试的本质在并行程序的环境中存在调试效率不高的问题。根据作者的测试,在不对程序造成较大的性能损失影响的前提下,最多可以同时调试128个进程。原创 2024-03-28 15:36:39 · 550 阅读 · 0 评论 -
avahi_entry_group_add_record的用法
avahi_entry_group_add_record 在头文件注释及官方文档中没有任何的说明,如果想使用该接口发送自定义的消息会一点头疼,这里通过分析avahi源码来介绍一下使用方法,下面的内容需要对mDNS以及DNS-SD协议有一定程度的了解。原创 2023-06-14 16:07:16 · 807 阅读 · 2 评论 -
DPDK 启用中断收包
DPDK默认的轮询模式在没有接收到报文的空载状态下也会占用100%的CPU,非常浪费电力。通过在低速率和空载状态下启用中断收包,在高速率下使用轮询收包便能兼顾性能与节能的目标。以下代码基于DPDK 21.11.3的示例代码,examples/l3fwd-power/main.c,该程序提供了多种CPU、网卡节能的工作模式,以及动态CPU频率调节等节能手段。这里仅关注其中处理中断的部分(指定--legacy运行的模式),并将代码简化为网卡上一个端口一个接收队列的处理。原创 2023-01-17 11:26:10 · 613 阅读 · 0 评论 -
从汇编代码来看C++的引用
main.cpp#include <iostream>int var1 = 0;int main() { int &var2 = var1; var2 = 20; std::cout << var1 << std::endl; return 0;}$ gcc -S main.cppmain.s首先,代码是在64位平台上编译的。第30行处可以看到,编译器在栈中为var2分配了一个局部变量的空间,长度为8(64原创 2022-05-27 13:19:39 · 175 阅读 · 0 评论