- 博客(1589)
- 资源 (19)
- 收藏
- 关注
原创 HPE DL360服务器: BIOS: configuration backup/restore
摘要:本文介绍了如何通过BIOS界面备份系统配置以便进行对比分析。操作方法为:进入System Default Options->Backup and Restore Settings,选择zip格式文件保存配置(自动创建新文件)。备份文件解压后包含Schemas等目录,其中Schemas目录下存储着完整的BIOS配置信息(约150字)。该功能解决了人工逐项对比BIOS配置的难题,便于通过文件对比工具进行系统配置差异分析。
2025-06-12 07:11:10
323
原创 Coredump-v: vpp coredump
VPP项目新增了崩溃堆栈打印功能,当程序收到SIGSEGV信号时会自动输出调用栈信息。GitHub issue #3600展示了该功能的实际输出示例,包括错误内存地址(0x0)和部分调用栈记录。该功能显著提升了问题定位效率,开发者可以通过分析堆栈信息快速定位崩溃原因。示例中显示了无效内存地址访问导致的段错误及其部分调用链(#0和#1两帧)。
2025-06-11 17:17:13
19
原创 C++: condition_variable: wait_for -> unlock_wait_for_lock?
作为C++的初学者,面临的一个很大的问题,就是很多的概念并不是可以通过名称直观的预知它要完成的细节,比如这里的condition_variable的wait_for。C++的设计意图好像是,我告诉你这样用,你只要这样做就行,又简单还实用!更像是给人工只能开发的开发语言,而不象是给人这种具有因果逻辑的生物而设计的。其实从更容易的角度看,这里的condition_variable和mutex应该合成一个更内聚的抽象类,不要让使用者思索,他们之间的任何相关性。
2025-06-11 08:04:11
238
原创 Coredump-x: 使用systemd-coredump抓取core文件
Linux系统核心转储配置与日志分析摘要: 配置方面: 使用ulimit -c unlimited命令解除核心转储限制 系统默认核心转储模式为systemd-coredump处理,可通过修改kernel.core_pattern调整 日志分析: 系统完整记录了a.out程序崩溃过程: 段错误发生时的指令指针、堆栈指针等详细信息 完整的堆栈跟踪信息 核心转储文件生成状态 生成文件: 核心转储文件存储在/var/lib/systemd/coredump/ 文件名包含程序名、用户ID、时间戳等元信息 采用lz4压
2025-06-10 09:39:35
23
原创 [晕事]今天做了件晕事78:systemd,原来service name里的 @字符有特殊含义
执行 [email protected] 服务时出现错误,提示缺少实例名称。该服务为模板服务,启动时需要指定具体实例。解决方法包括:确定所需实例名称,使用正确命令启动(如 systemctl start [email protected]),并检查服务状态。若不确定实例名称,需查阅相关配置或文档。
2025-06-10 09:29:54
21
原创 Linux: network: switch: hp5500:GARP 风暴背后的 ARP 丢包与路由器瓶颈
摘要: 本文分析了一个网络故障案例:主机配置大量IP地址并发送大量GARP广播后,路由器仅处理部分请求并出现ARP响应中断。初步排查认为二层交换机存在问题,但调整参数无效。深入分析发现,GARP的实际使用者是三层设备路由器,其ARP限速机制导致问题。通过调整路由器ARP限速参数(如提高阈值或关闭限速)解决了故障。经验表明,GARP问题本质是三层设备限制,排查时应关注数据流动全链路。建议优化IP配置方式并合理设置路由器ARP限速策略,避免类似问题。
2025-06-09 07:36:13
272
原创 Coredump-N: 空指针没有判断导致coredump
《空指针问题:一个价值十亿美元的设计教训》 摘要:空指针引发的程序崩溃揭示了更深层的设计问题。本文通过实际案例和《C++代码整洁之道》的观点,指出null是"设计上的失败",它增加了代码复杂度并带来安全隐患。作者反思了常见错误模式,并提出改进方案:用引用表达必须存在、用std::optional表达可选、减少裸指针使用。文章强调,空指针问题是系统设计代价的体现,建议从设计源头减少null可能性,让代码更具可维护性和可靠性。(149字)
2025-06-09 07:35:27
130
原创 C++:abnormal terminate std::stoi,空串
在这里如果__endptr == __str,也就是没有内容的传作为参数,就会trigger这个exception/terminate。如果传递进来的是一个空数组,就会有问题。如果传递进来的是一个没有内容的string,也会导致这个问题。这个函数接受的参数是string对象。
2025-06-05 08:54:38
438
原创 C++: gcc _GLIBCXX_USE_C99_STDIO=1
看汇编还有一定的迷惑性,因为使用的是函数指针做参数来调用实际的C函数。从头文件看,是使用了C99版的stdio。
2025-06-05 08:46:24
161
原创 [英语单词] caveats,warning
摘要:在技术文档中,"caveats"与"warnings"存在差异。"caveats"指注意事项或边界条件,用于提醒不直观的行为或已知限制(如man手册中的CAVEATS小节),语气较温和;而"warnings"表示更严重的风险警告,强调可能的数据丢失或系统崩溃等危险操作。建议文档编写时,边界条件问题用"CAVEATS",危险操作使用"WARNING"或"DANGER"
2025-06-04 11:35:29
476
原创 Linux: network: switch:arp cache更新规则 [chatGPT]
当ARP aging time设为5分钟且已存在某IP的ARP缓存时,收到相同IP但不同MAC的UDP包,通常不会更新ARP表。这是因为: 普通数据包(如UDP)不会触发ARP表更新,只有ARP响应或Gratuitous ARP才会更新 这种机制是防止ARP欺骗攻击的安全设计 更新ARP表需要主动的ARP协议交互 例外情况包括收到ARP响应或缓存超时重新学习。建议通过调整ARP老化时间或配置安全机制来处理MAC变更问题。
2025-06-04 07:46:28
253
原创 [C++] RAII, 老代码的问题,内存泄漏
比如最近关注公司产品的commit,发现解决memory leak的问题的commit真不少,时不时就会出来一个,不管是从现场或者是内部测试,很大一类就是因为没有相应的RAII机制。如果缺少RAII的设计存在,就需要开发者,每一个人,不管是有经验的老员工,还是没经验的新员工(当然当前部门已经很少招新人,至少可以说自从2017年以来就没进过几个新人,掐指一算也有八九年时间了,怪不得自从2016年以来收到的喜糖喜蛋就陡然变少了),时时提防错误分支的资源释放,如果遗漏,就会出现错误。
2025-06-03 16:54:17
23
原创 Linux: network : switch:hp5500
摘要:本文介绍了动态ARP老化定时器(dynamic ARP aging timer)与MAC地址老化时间(mac-address aging-time)的区别。通过命令行查询显示:ARP老化时间默认为10分钟,而动态MAC地址条目老化时间则为300秒(5分钟)。两者虽然都与网络设备老化机制相关,但分别作用于不同协议层(ARP对应网络层,MAC地址对应数据链路层),且具有不同的默认时间设置。附图说明了查询这两个参数的示例命令。
2025-06-03 16:49:49
173
原创 [值得关注] LWN.net
【摘要】作者计划每日分享程序员必读文章,以解决技术书籍的滞后性问题。近日通过LWN.net网站整理了三篇技术短文,涉及Linux开发相关内容。推荐Linux开发者关注LWN.net,该网站提供全面的Linux技术动态和背景知识解析,能帮助理解代码提交背后的深层原因。虽然网站为英文内容,但确实值得开发者学习参考,这也凸显了掌握专业英语的重要性。(98字)
2025-06-02 09:23:01
166
原创 [值得一看]利用AI选取需要的commit:AUTOSEL
有些commit需要并入老版本,稳定版本;如bug fix, memory leak之光的commit。在现实在大AI大力发展的今天,来一次重大改变。
2025-06-02 07:54:27
132
原创 [值得一看]系统调用接口的规范一例
Linux内核遵循"内部重构"与"接口稳定"的双重原则:允许内部架构改良以提升质量,但严格维护用户空间接口的稳定性,哪怕程序依赖了未文档化行为。这种平衡有时会导致内核问题修复困难,反映了开源项目在演进与兼容性之间的典型矛盾。
2025-06-01 09:57:05
105
原创 [值得一看] openssl 3.0
这篇博客详细分析了OpenSSL 3.0的性能表现,指出其存在一定程度的性能损失。文章对SSL/TLS技术栈的现状进行了清晰透彻的解析,值得相关技术人员参考。博客地址:https://www.haproxy.com/blog/state-of-ssl-stacks (约100字)
2025-06-01 09:30:27
191
原创 HPE路由器的文档查阅的一个问题
摘要:用户通过Bing搜索HPE 5930交换机PDF规格文档,在HPE支持页面使用精确关键词“arp rate-limit”查询配置信息。文档指出HPE技术文档分散的问题,建议学习Intel的做法将所有开发者文档集中整合,方便新手快速定位所需内容。目前只能依赖网站搜索功能和逐步摸索来查找具体文档。配图为相关文档搜索界面截图。(98字)
2025-05-28 11:06:31
38
原创 英语单词:signature
署名: a document with two signatures on it 经两人签署的文件 * Her signature is almost illegible. 她的签字很难辨认. (b) [U] action of signing sth 签名;他是想说有两次restart,而且可以看到restart时特有的签名:也就是日志信息。这样是非常自然的一种表达,每种restart的情况可能都不一样,也就是会有一个固定的模式,和人的签名有些类似。比如某个pod重启的原因可能是某个程序产生了segv。
2025-05-28 08:02:57
256
原创 Linux: network: dpdk, VF, ip link set down 对VF不生效
本文探讨了在主机端关闭PF接口对分配给VM的VF接口功能无影响的现象。研究发现,当VF被分配给VM使用DPDK时,主机端的ip link set down操作不会影响VF运行状态。通过Mellanox的架构图可以看出,PF/VF都连接在Multiport E-Switch上,且主机无法看到VM使用的VF接口。文章指出需要通过特定命令(如ip link set ens15f0np0 vf 0 state disable/auto)来控制VF状态,并建议参考NVIDIA官方文档进行VF分配配置。最后通过内核调用
2025-05-28 07:47:57
179
原创 c/c++: 临界区划分不全的一个问题
摘要:文章分析了一个多线程竞争问题,原因是临界区划分不准确导致全局变量读取操作未被保护。当线程A读取资源时,线程B释放并修改了同一资源,导致A仍使用旧版本。原代码中读取操作在锁外,修复方案是将所有操作移至锁内,确保线程安全。核心在于正确规划临界区范围,避免资源竞争问题。(149字)
2025-05-27 07:51:25
314
原创 Openstack: VM arping丢包之谜:换host即解决【没有找到根本原因】
本文描述了虚拟机网络故障的排查过程:首次arping测试有响应但后续无回复,通过将VM迁移至其他主机临时解决问题,推测原主机存在配置问题但因权限受限无法深入调查。尽管重启neutron服务无效,云平台管理员仅以迁移成功为由关闭工单,未进一步排查潜在规则触发的arp丢包问题。案例反映了管理流程中对根因分析的忽视。
2025-05-27 07:49:43
118
原创 英语单词: Terminate
这篇文章探讨了编程术语"terminate"在不同语境中的含义差异。作者最初在阅读《并发编程》时,将"terminate"误解为"半途终止",导致无法理解关于临界区代码的论述。通过ChatGPT的解释,作者认识到在计算机科学中,"terminate"特指程序正常执行完毕,而非意外终止。文中还对比了电影《终结者》中"terminate"表示"消灭"的不同含义,强调了专业术语的语境重要性。这个
2025-05-26 10:25:49
614
原创 Coredump-X: 替换malloc相关的函数不彻底;systemd新版本导致
摘要:文章讨论了因未彻底替换malloc相关函数导致的coredump问题。根据GNU说明,必须完整替换所有内存分配函数,否则可能导致静态链接失败或运行时堆损坏。以systemd新版本使用malloc_usable_size为例,若上层应用未同步更新替换该函数,就会引发问题。文中展示了相关代码片段,强调必须关注底层库的内存管理函数变更,确保完整替换整套内存分配函数以避免兼容性问题。
2025-05-26 08:14:39
145
原创 Linux: network: GARP 量大 switch处理不过来?设计
在一台虚拟机上设置大量IP地址(如1000个)时,若业务虚拟机发生切换,另一台虚拟机会添加这些IP并通过GARP广播其MAC/IP。由于短时间内发送大量ARP请求,可能导致交换机(如HP5500)在一秒内无法响应任何ARP请求。HP5500交换机的ARP速率限制默认设置为50包/秒,最新版本已提升至400包/秒。设计时应考虑此限制,避免因外部设备性能瓶颈导致功能失效。此外,需评估是否真有必要在一台机器上设置如此多的IP地址,或考虑其他虚拟化替代方案以优化网络性能。
2025-05-23 10:45:08
228
原创 Linux: security: Operation not permitted, append only
最近看碰到一个permission的问题,进去一看root是有权限rw,但是就是不能用echo把文件写空。在文件系统中,设置文件为“append only”属性通常意味着文件只能在末尾添加数据,而不能修改或删除已有内容。这种属性可以用于日志文件或其他需要保持历史记录的文件。在Linux系统中,可以使用chattr命令来设置文件的“append only”属性。
2025-05-23 07:11:48
21
原创 wireshark: Display Filter Reference
Wireshark的扩展功能非常强大,能够帮助用户进行深入的问题分析。它支持大量的自定义字段读取功能,并且兼容多种协议。例如,在Wireshark的文档中,frame.time_delta和frame.time_delta_displayed是两个常用的字段,分别表示从上一个捕获帧和上一个显示帧的时间差。这些功能从版本1.0.0到4.4.6都得到了支持,展示了Wireshark在协议分析和时间管理方面的强大能力。通过这些工具,用户可以更高效地进行网络数据包的分析和调试。
2025-05-22 08:21:50
179
原创 C++:RAII的不能顾名思义?
RAII(Resource Acquisition Is Initialization)的字面意思“资源获取是初始化”对于不了解背景的人来说较难理解。实际上,RAII的核心思想是在构造函数中获取资源,并在析构函数中释放资源。因此,更直观的表达可能是“Resource Acquisition in Constructor”(RAIC),这样可以直接联想到构造函数和析构函数的关系,减少理解上的绕路。RAII的设计模式在C++等编程语言中广泛用于资源管理,确保资源的自动释放,避免内存泄漏等问题。
2025-05-22 08:01:14
288
原创 c: 分号的歧义
文章探讨了编程语言中分号的使用问题,特别是在某些语言中,开发者习惯性地在每行代码后添加分号,这可能导致不必要的错误。作者指出,Python语言通过其语法设计,避免了这种问题,因为它不需要在每行代码后添加分号。文章提出了一个疑问:既然一行代码的结束本身就意味着语句的结束,为什么还需要用分号来明确表示结束?这反映了不同编程语言在语法设计上的差异和开发者习惯的影响。
2025-05-21 09:18:12
36
原创 Linux: events: epoll 死循环?
在网络应用中,网络问题是不可避免的,因此上层应用必须具备容错机制以应对此类问题。最近遇到的一个案例中,由于上层应用使用了Linux的epoll机制,但未设置EPOLLET标记(边缘触发),而是使用了默认的LT(水平触发)模式。在处理网络错误时,应用忽略了EPOLLERR错误,导致错误事件未被及时处理,持续触发,使得socket一直有事件需要处理,最终导致上层应用进入死循环。这一情况提醒我们,在使用epoll机制时,必须谨慎处理错误事件,避免因未及时处理而引发死循环。
2025-05-20 07:44:29
522
原创 Linux: network:ipv6: keep_addr_on_down
网卡down掉之后,上面配置的IP6地址,是根据这个参数keep_addr_on_down,来确定是否要自动删除。第一次看到这个参数,这个还挺实用。
2025-05-19 22:49:15
24
原创 gcc: attribute: packed
在C语言中,enum类型默认占用4个字节的内存空间。然而,通过使用__attribute__((packed))属性,可以强制编译器将enum类型压缩到最小可能的字节数。例如,在给定的代码中,enum类型abc在没有packed属性时占用4个字节,而加上packed属性后,它仅占用1个字节。这是因为packed属性告诉编译器尽可能紧凑地存储数据,减少内存占用。这一特性在处理内存敏感的应用时非常有用,但需要注意可能带来的对齐问题。
2025-05-19 14:50:36
113
原创 英语学习:amount of time
在描述时间消耗时,使用 "amount of time" 是一种常见且准确的表达方式。例如,在讨论 malloc 函数调用所消耗的时间时,可以使用 "amount of time per malloc call" 来表达。这种表达方式不仅简洁明了,还能准确传达时间消耗的概念。通过这种方式,可以更清晰地描述和分析程序中的时间开销问题。
2025-05-16 21:22:55
205
原创 Linux: network: dpdk: 初始化问题, ie40, x710,rx/tx-queue
在DPDK与Intel网卡结合使用时,Intel X710/XL710千兆以太网控制器的队列是成对配置的,即一个接收队列(RX queue)和一个发送队列(TX queue)组成一个队列对。默认情况下,每个虚拟功能(VF)有4个队列对,最多可配置为16个。文档中强调了队列必须成对使用,但未明确说明如果RX和TX队列数量不一致会有什么具体影响。这种配置可能会导致未定义行为,类似于C++中的未定义行为,结果不可预测。因此,建议严格按照文档中的建议,确保RX和TX队列数量一致,以避免潜在问题。
2025-05-16 08:56:32
368
原创 [晕事]今天做了件晕事77 link is not ready/NIC Link is Down
在分析ip link set eno2 down/up的日志时,发现之前对某些日志信息的理解存在错误。日志[779001.387818] IPv6: ADDRCONF(NETDEV_UP): eno2: link is not ready实际上表示在执行up操作时,网络链接尚未准备好,而不是在down操作时出现的。同样,Broadcom驱动打印的日志NIC Link is Down也是在执行up操作时出现的,而不是在down操作时。这些发现表明,需要修正对这些日志信息的潜意识理解,以更准确地解读网络接口状态
2025-05-15 10:13:24
238
原创 [晕事]今天做了件晕事76:switch分支没有给变量赋值?遗漏
在使用SonarQube进行代码检查时,发现一个潜在的错误:一个字符串指针变量在函数开始时被初始化为NULL,随后在一个switch语句中被赋值。然而,default分支未对该指针进行赋值,导致在后续使用该指针时可能引发错误。正确的做法应确保在default分支中也对指针进行赋值,或者在该分支中直接退出函数,以避免未定义行为的发生。这个例子展示了静态代码检查工具在捕捉常见编程错误中的重要性,提醒开发者在编写代码时需更加细致,确保所有路径都得到妥善处理。
2025-05-15 08:08:59
128
原创 英语单词:Clamp
v 1 [Tn] grip or hold (sth) (as if) with a clamp (像)用夹具夹住(某物): He kept his pipe clamped between his teeth. 他一直叼着烟斗. 2 [Tn, Tn.pr] ~ A and B (together);klæmp/ n 1 (also cramp) device for holding things tightly together, usu by means of a screw 夹具;
2025-05-14 08:14:32
403
原创 Linux: lib: tcmalloc,gperftools
谷歌开发的开源类库TCMalloc是一个针对C和C++代码的定制化内存分配解决方案,旨在提供比标准库如glibc更快的多线程内存分配性能。TCMalloc通过优化malloc()和C++的new操作符,提高了内存分配的效率。此外,TCMalloc提供了详细的运行时内存分配统计信息,可以通过调用tcmalloc::MallocExtension::GetStats()获取。这一功能对于性能调优和内存管理非常有用。值得注意的是,Envoy代理软件也采用了TCMalloc,进一步证明了其在高效内存管理方面的优势。
2025-05-14 08:00:30
35
原创 英语单词:fan-in,fan-out
“Fanout”是一个在电子工程、计算机科学和网络拓扑中广泛使用的术语,描述了一个节点或设备能够直接连接或管理的其他节点或设备的数量。在电子电路中,它指一个逻辑门或信号源能够驱动的其他逻辑门或输入的数量;在计算机科学中,特别是在树结构中,它指一个节点能够拥有的子节点数量;在网络设计中,它描述了一个网络节点能够直接连接的其他节点数量。在RCU(Read-Copy-Update)的上下文中,“fanout”指的是树型结构中每个管理节点能够直接管理的处理器或子节点数量,通过调整fanout值可以优化宽限期管理和回
2025-05-13 14:22:11
923
原创 英语单词:evaluate;evaluation
在C语言中,__verify_pcpu_ptr()函数用于验证传入的@ptr是否为合法的per-CPU指针,但在此过程中不会对指针进行求值(evaluation)。这意味着函数不会访问指针指向的内存地址或解引用指针,而仅检查指针的形式或合法性。这种设计是为了确保在实际使用per-CPU指针之前验证其合法性,同时避免提前访问可能导致的未定义行为或逻辑错误。例如,在验证指针后,实际的访问操作才会发生。这种机制既保证了安全性,又实现了泛化。
2025-05-13 09:38:20
164
免安装的perf程序,基于内核4.18.0-553.27.1
2024-12-07
Netlink 实际操作代码,实际可以参考iproute源代码做,这里只是方便自己使用的一个样例
2022-03-12
C,删除无用ifdef宏的工具
2023-02-03
MTU 相关知识总结点(一)
2022-10-17
ip添加vlan interface的strace日志
2022-03-29
免安装strace strace.zip
2021-07-20
Net-Interface-1.016.tar.gz
2021-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人