- 博客(1727)
- 资源 (19)
- 收藏
- 关注
原创 c: error: expected declaration specifiers or ‘...’ before string constant
文章摘要:当在C语言中使用未定义的宏(如ABC)或宏名称错误时,编译器会提示"字符串常量前必须有specifier"的错误。示例代码ABC("abc")中,若ABC未声明或拼写错误,就会触发该编译错误。这种情况通常发生在宏定义缺失或调用时使用了错误的宏名称。
2025-11-24 15:08:27
11
原创 Linux:kernel module: redhat9: tools/objtool/objtool-in.o] Error 1
摘要:在RedHat 9系统升级后,内核模块编译出现错误,提示tools/objtool/objtool-in.o] Error 1。解决方案是将Makefile中的SUBDIRS替换为M参数。虽然RedHat官方文档已改用M参数,但4.18内核的Makefile仍保留了对SUBDIRS的兼容支持,而5.14内核已移除该说明。这一变动缺乏明确文档说明,导致不熟悉该领域的开发者难以理解错误原因。建议在RedHat 9的release note中明确标注此变更。
2025-11-24 15:00:35
134
原创 开源软件:pstack
摘要:pstack工具用于打印运行程序的调用栈(backtrace),便于问题诊断。相比gdb提供的pstack功能,开源工具pstack(来自github.com/peadar/pstack)提供更丰富的特性,包括支持Python调用栈、显示更多框架(如_start和libc初始化函数)以及多种高级选项,如JSON输出、参数显示、多线程支持等。该工具还支持调试信息路径配置、重复采样、ELF/DWARF信息转储等功能,适用于复杂场景的调试需求。
2025-11-20 09:27:27
227
原创 c++: error: ISO C++17 does not allow dynamic exception specifications
摘要:在RedHat 9升级中遇到GCC 11.5对旧代码的兼容性问题,动态异常规范throw(def)报错。动态异常规范原本用于声明函数可能抛出的异常类型,作为调用约定。但由于运行时开销大、实用性有限、与模板冲突等问题,C++11废弃并在C++17移除了该特性。现代C++建议:可能抛异常时不声明异常规范,保证不抛异常时使用noexcept。
2025-11-20 08:21:25
494
原创 C: undefined reference to `yywrap‘,flex -> libfl-static
摘要:在RHEL系统中使用flex开发工具时需安装flex-devel包,该包提供了静态链接库文件/usr/lib/libfl.a和/usr/lib/libl.a。但在RHEL9中,相关包名已变更为libfl-static-2.6.4-9.el9.x86_64,功能相同但采用新的命名规范。开发时需注意不同RHEL版本间的包名差异。
2025-11-19 11:30:14
247
原创 Linux: virsh:dump
摘要: virsh dump命令用于Openstack虚拟机挂起/卡死时获取核心转储文件,便于后续分析。命令语法支持多种选项:--live保持运行状态,--crash标记崩溃状态,--reset转储后重置,三者互斥。--memory-only生成ELF格式文件(仅含内存和寄存器值),兼容crash工具;非ELF格式需专用工具解析(如vol)。建议同时生成两种格式(加--live)。注意权限问题及路径查看(使用--verbose),并避免过时的kvmdump格式。示例:virsh dump domain /p
2025-11-19 08:18:53
747
原创 Linux: DPDK: EAL: Cannot set up DMA remapping, error 28 (No space left on device)
摘要:本文分析了DPDK框架中出现的"DMA重映射设置失败(设备空间不足)"错误。该问题源于EAL组件在配置DMA时发现内存资源不足,具体表现为虽然预留了24个1GB的大页内存(总计约24GB),但系统缺少对应大小的hugetlbfs挂载点。文章剖析了DMA与大页内存的关系,指出过大的hugepagesize配置会快速耗尽内存资源。代码层面,当vfio_iommu的dma_avail为0时,会返回ENOSPC错误(错误码28)。建议合理配置大页内存大小以避免此类资源耗尽问题。
2025-11-18 08:25:32
31
原创 [开源软件] bvi十六进制编辑器
摘要:OpenStack虚拟机内高优先级应用程序死循环导致系统阻塞,常规诊断方法失效。建议通过分析内存dump定位问题,使用Linux下的十六进制编辑器bvi处理大内存文件。安装需ncursive-devel依赖,支持vi式操作和十六进制搜索,注意小端存储的字节顺序。工具说明需查阅英文文档,凸显专业英语的重要性。(149字)
2025-11-18 07:45:09
569
原创 Linux: crash: ps 需要注意的一个地方,volatility3
该摘要描述了进程和线程关系的分析。通过ps命令显示,"aim"进程(PID 3334/3335)启动了多个"cfed"线程(如5980等),其中5980是主线程。使用ps -g可以更清晰地看到5980与其他线程的父子关系。而Volatility3工具的分析结果显示这些线程的PPID(父进程ID)为0,与ps命令结果不一致,表明工具可能无法正确识别线程关系。这提示在进程分析中需要注意不同工具对线程处理的差异,特别是父子进程关系的识别可能存在问题。
2025-11-17 15:23:48
228
原创 [晕事]今天做了件晕事96,为什么有其他subnet的neigh记录
摘要:同事反馈外部无法ping通10.67.85.37地址,原因是缺少默认路由。虽添加了默认路由,但错误地将网关地址复制为本地IP(10.67.86.245)而非正确网关(10.67.86.254),导致问题未解决。后续调试中又发现非本地子网的邻居记录异常,实为路由配置错误所致。整个过程反映出操作时存在粗心大意的情况,未能仔细核对配置细节。
2025-11-17 11:34:56
346
原创 ChatGPT/Deepseek可以给普通人带来什么?
摘要:文章探讨了AI技术如何改变普通人获取知识的体验。作者回忆学生时代向老师提问遇挫的经历,对比现在AI提供的即时、耐心解答,特别以Python语法查询为例展示ChatGPT的实用性。文章指出AI解决了传统人际交流的隐私顾虑和效率问题,认为智能助手将推动教育模式从"填鸭式"向兴趣导向转变。只要保持AI知识输出的开放性,这项技术就能真正实现知识普惠,为普通人带来学习便利(149字)
2025-11-15 10:06:45
248
原创 python/C++:对SIMD的支持
Python主要通过底层优化库间接利用SIMD技术提升性能。数值计算库(如NumPy/SciPy)通过底层C/Fortran代码的自动向量化和显式SIMD指令来加速数组运算。Numba JIT编译器利用LLVM生成带SIMD优化的机器码,Cython则通过C扩展间接获得SIMD优势。OpenCV通过统一接口适配不同架构的SIMD指令。这些方式共同实现了Python高性能计算能力,其中NumPy的连续内存布局和运行时SIMD调度尤为关键。虽然Python语言本身不直接支持SIMD,但通过这些优化手段仍能充分发
2025-11-15 10:04:18
1080
原创 glibc: preinit_array的实现
文章摘要:文章探讨了sanitizer代码中preinit_array功能的实现原理,分析了glibc中相关调用流程(附调用流程图)。同时介绍了通过设置环境变量来调试preinit_array中函数的方法。两篇参考文章分别从技术实现和调试技巧的角度,详细解析了preinit_array在程序初始化阶段的应用场景和使用方式。内容涉及底层程序初始化机制和调试技术,为开发者理解程序启动流程提供了实用参考。
2025-11-10 08:43:16
352
原创 glibc:本身的debug方式:LD_DEBUG
摘要:glibc调试可以通过环境变量LD_DEBUG实现,设置LD_DEBUG=all可显示动态链接过程,包括库文件搜索路径、加载行为等。示例展示了执行ls命令时查找libselinux.so.1库的详细过程,包含缓存查询、文件定位和内存映射信息。相关文档可在man8/ld.so.8和man3章节(如man-pages包中的malloc.3)中查阅,提供系统调用及内存管理函数的参考信息。
2025-11-10 08:24:43
279
原创 [数学] 凹凸函数的反直观
摘要:文章探讨了凸函数名称的直观理解问题。传统的凸函数曲线图常让人困惑为何"凹"函数被称为"凸"。实际上,凸函数的概念源自凸集合:当函数图像下方的区域呈凸集时即为凸函数。通过在图中添加灰色背景(代表凸集)可以更直观地展示这一点。对照来看,凹函数的概念也更容易理解——当函数图像上方的区域是凸集时即为凹函数。这种视觉化的解释有助于厘清数学概念与直观感受之间的差异。
2025-11-07 09:50:29
328
原创 [数学] 单位圆曲线的维度为什么是1?
这篇讨论揭示了数学概念中不同维度定义的区别:单位圆在仿射维数中被认为是二维(其仿射包为整个R2平面),而在拓扑/几何维度中却被视为一维曲线(仅需一个参数描述)。这体现了数学概念的多面性,也反映出拓扑学和几何学更倾向于直观理解,通过"运动自由度"和局部特性来把握对象本质。这种差异暗示了知识边界拓展的重要性,未来可能进入更注重提问艺术与学问的时代,通过精准提问来深入理解复杂概念的不同维度。
2025-11-07 08:29:57
736
原创 Linux:network:wireshark:一次SIP消息delay事件的发现
摘要:作者通过Wireshark的SIP统计功能发现SIP消息延迟问题。在分析注册流程(register/401/register/200OK)时发现缺少200OK响应。通过比较401消息时间戳与抓包时间,确认应用层存在延迟(排除了网络问题)。最终定位到SIPp工具的重传(retrans)机制导致大量消息堆积是根本原因。建议在问题分析前应先确认测试表现并查看系统计数统计。整个过程展示了如何通过协议分析工具定位SIP消息风暴问题。(149字)
2025-11-05 14:45:37
32
原创 Java:PrintWriter,FileWriter的选择
摘要: PrintWriter适合需要便捷文本输出且对错误处理要求不高的场景(如日志记录),因其提供println等格式化方法但仅通过checkError()反馈错误,无法获取具体异常信息。若需严格错误处理(如立即捕获磁盘满等IO异常)或二进制写入,应改用FileOutputStream、BufferedWriter等直接抛出异常的方法。使用PrintWriter时务必主动调用checkError()检查错误,尤其在批量写入和关闭流时。其设计权衡了便利性与错误反馈粒度,需根据可靠性需求选择。
2025-11-05 09:02:43
426
原创 Linux: 磁盘:关键文件修改的过程
摘要:某系统因关键文件被清空后磁盘满载导致写入失败,引发登陆故障。问题根源在于修改流程存在缺陷:程序先清空/etc/passwd和shadow文件再写入新内容,未考虑磁盘空间不足风险。建议优化为更健壮的流程:先在临时目录生成新文件,确认无误后再替换原文件。这种原子性操作可避免中间状态导致系统故障。(99字)
2025-11-04 20:13:22
506
原创 Linux: security: PAM account management error: Authentication service cannot retriev
摘要:PAM账户管理错误"Authentication service cannot retrieve authentication info"通常是由于系统用户文件(如/etc/shadow、/etc/passwd)出现问题所致,例如文件内容被清空。系统日志中可能出现类似"could not obtain user info (root)"的错误信息,这表明PAM无法获取用户认证信息,可能是由于底层pam_modutil_getpwnam()函数调用失败引起的。错误
2025-11-04 09:03:05
56
原创 云平台:网口断掉链接时的警告问题一例
摘要:PCI直通模式下虚拟机的网口状态监控存在监控盲区。当网络设备通过PCI直通直接分配给虚拟机时,HPE管理工具无法检测物理连接状态,导致无法上报cpqNic3ConnectivityRestored等告警。这种情况需要在虚拟机内部实现网口状态检查机制,否则可能造成告警遗漏。该问题凸显了虚拟化环境中物理设备直通带来的监控挑战。
2025-10-28 15:00:01
34
原创 [英语单]dirtyable
摘要:"dirtyable"是计算机领域中的技术新词,由"dirty"(表示数据被修改但未保存)和"-able"(表示"能够被...")组合而成。它特指内存或数据结构可以被修改并标记为"脏"状态的属性,这类数据需要后续同步操作。例如,内核中的dirtyable内存指除了系统占用部分外,可供修改使用的内存区域。这个术语形象地描述了可修改数据的状态特性。
2025-10-28 13:25:31
275
原创 Linux: 网络: SIPp导致的网络风暴
SIPp工具在UDP协议下发送Register消息时存在自动重传机制,当应用队列满且出现应用层延迟时,会导致注册失败。根据SIPp脚本注释,非INVITE请求会按T1时间间隔(默认500ms)进行指数退避重传,最多重传9次。SIPp提供了相关配置参数控制重传行为,如max_retrans、T2等。RFC 3261规定非INVITE事务的重传间隔会以T1开始指数增长,上限为T2(默认4秒)。该队列用于流量削峰,但需确保不影响正常业务。
2025-10-25 15:35:10
39
原创 Linux: 网络:抓包ngrep
摘要:文章介绍了一款实用的抓包工具ngrep,用于解决在网络延迟问题中过滤特定SIP消息内容的难题。与tcpdump/tshark不同,ngrep支持按包内字符串内容过滤,特别适合处理业务量大、磁盘空间有限及存在jumbo MTU的情况。作者通过ChatGPT获取该工具信息,并给出示例命令:ngrep -d sig1 -q -t -W byline 'sip:999917571280914' -O abc.pcap,可精准捕获包含指定SIP号码的数据包。
2025-10-24 11:02:44
574
原创 [晕事]今天做了件晕事95,ldd在不同版本的操作系统上显示结果不同
在RHEL8上编译的程序ngrep依赖较多库文件(包括libnl相关库),而同样的程序在RHEL7上运行时依赖较少。这是由于RHEL8的libpcap版本较高,新增了对libnl等库的依赖,而RHEL7的旧版libpcap没有这些依赖关系。这展示了不同Linux发行版版本间库依赖的兼容性差异。
2025-10-24 08:44:17
177
原创 glibc: pollfd,revents, r代表什么意思
这段内容解释了pollfd结构体中的revents字段含义:r代表"returned"或"result",表示调用poll()后实际发生的事件,与events(调用者关心的事件)区分。同时说明了常用的事件标志位(POLLIN、POLLPRI、POLLOUT)及其作用。摘要概括了核心概念:revents与events的区别,以及事件标志位的用途。
2025-10-23 10:10:39
173
原创 Linux: network: wireshark:tcp 0.5 秒‘息停’发数据数据图表
摘要:图表分析显示接收窗口(Rcv Win)与发送字节数存在周期性5秒停顿,可能是应用操作所致。窗口较小由缩放因子导致。RTT图表无数据时无法计算。序列号呈阶梯状,0.5秒的平面-斜坡变化表明存在短暂停顿。多图联合展示了TCP流量控制的特征性表现。(149字)
2025-10-23 08:40:54
383
原创 Coredump-N: 寄存器的一个bit位被未预期的修改, FD_SET
摘要:X86架构下客户现场出现SegmentFault问题,排查发现R12寄存器被篡改1个bit位导致内存越界。问题与FD_SET已知缺陷相关,当socket_fd超过1024时会引发越界修改。该缺陷源于老旧select接口未对socket参数进行校验,建议新代码改用poll/epoll以避免此类问题。
2025-10-22 20:16:29
302
原创 Linux: kvm: config:halt_poll_ns
KVM halt-polling 机制通过在guest执行HLT指令时短暂忙等待,减少调度开销,提升虚拟机响应速度。该机制引入halt_poll_ns参数控制最大轮询时间(纳秒),允许为不同虚拟机配置不同策略:延迟敏感型应用可设置较长轮询时间,普通负载则可缩短以节省CPU。相比传统立即调度的方式,该特性有效降低了因频繁上下文切换带来的性能损耗,但需要在响应速度和CPU利用率之间进行权衡。最新改进支持为每个虚拟机单独设置轮询时长,提供更精细化的性能调控能力。
2025-10-21 08:38:16
46
原创 Linux:perf:sched latency数据分析,task平均每次运行时间2.8ms,min_granularity_ns
摘要:Linux perf工具显示CPU调度数据,其中CPU 0/KVM:3875312任务运行时间15178.075ms,调度5454次,平均每次运行约2.8ms。该值受以下因素影响:1)任务是否为CPU密集型;2)系统负载情况;3)系统参数如min_granularity_ns(如设为3ms会限制运行时间);4)其他未知因素。调度延迟数据还显示各任务等待调度的平均/最大延迟时间,如io_context_pool任务平均等待2222ms,最大达24448ms。这些指标有助于分析系统调度性能问题。
2025-10-21 08:09:40
296
原创 [笔记] 现在debug的问题越来越难了
本文总结了工作中问题解决的变化趋势。经验积累使同事求助次数从去年的20次降至今年5-6次,但近期解决问题时间反而延长。原因包括:简单问题已基本解决,剩余多为复杂难题;云环境导致调试不便;个人经验仍需提升。文章指出经验积累能提高效率,但随着问题难度增加,仍需持续学习以适应新挑战。
2025-10-18 17:27:24
107
原创 Linux: perf: sched latency,周期性抓取看趋势,做对比
本文分析了通过perf工具采集的调度延迟(sched-latency)数据,重点关注了各项任务的运行时、切换次数和延迟情况。数据显示主要延迟问题集中在io_context_pool、msgr-worker-1、log等与磁盘I/O相关的程序上,而非CPU性能问题。作者指出当前采集方法存在局限性,仅能获取一段时间内的总体统计数据,无法反映单位时间内的变化情况,建议在版本对比时应采用相同时间段的统计数据进行对比。数据中io_context_pool表现出最大延迟达24秒,远超其他任务,这可能是性能瓶颈所在。
2025-10-18 17:25:19
613
1
原创 gcc: cold.44
这段反汇编代码展示了函数_ZN8IMnstanceEv.cold.44的汇编指令,属于编译器优化的"冷"代码段(0x11ddec9e-0x11ddecb3)。该代码段包含内存释放操作(operator delete)和异常处理(_Unwind_Resume)。编译器将不常执行的代码(如错误处理)分离到冷代码段,以提升主代码路径的缓存效率。函数名中的.cold.44表示这是编译器生成的冷代码段,编号为44。
2025-10-15 12:58:05
36
原创 gcc: 函数调用优化一例,在栈里找不到函数调用的影子;gdb
文章摘要:分析一个栈调试问题时发现,函数lib_init()调用了CPMgr::init()但在栈上找不到调用痕迹。通过反汇编发现,编译器优化使用了jmpq指令直接跳转,而非常规的call指令,因此不会在栈上留下调用记录。这是编译器优化的典型案例,解释了为何栈回溯时缺失函数调用信息。
2025-10-15 09:05:25
143
原创 [英语单词] bogus
摘要:英语单词"bogus"意为"假的、伪造的",多用于描述虚假物品或信息。其词源尚无定论,最可能源自19世纪美国伪钞制造相关术语,可能由制造伪钞的机器名称演变而来,或与俚语"bogue"(指伪造品)有关。该词约在19世纪中叶开始广泛使用,现已成为日常用语。
2025-10-13 20:49:04
194
原创 Linux: network: 拔插网线 interface down/up测试的痛点
本文探讨了外企测试工作中因设备在国外导致的痛点,特别是需要外国同事协助进行破坏性测试(如拔插网线)时的不便。通过分析系统日志发现,网线可能存在虚插现象,表现为频繁的"unplugged/plugged"状态切换。日志还显示从插入网线到链路恢复需要约7秒,这一延迟属于正常现象,主要源于物理层协商、链路训练、模块初始化和驱动程序处理等环节的耗时。文章揭示了跨国协作测试中的实际问题,并解释了网络设备连接建立过程中的典型延迟原因。
2025-10-13 20:47:56
626
原创 Linux:kvm:perf正常样例
Perf分析显示,在host内核4.18环境下,高负载VM(CPU使用率~70%)存在显著性能瓶颈。主要热点包括:1) KVM模块占比最高(8.48%的kvm_vcpu_block),显示VM等待事件消耗大量CPU周期;2) 中断处理相关函数(kvm_lapic_find_highest_irr等)合计占比超10%;3) vhost线程中网络处理(nft_do_chain等)占用3%以上。这表明当前系统存在明显的VM调度和中断处理开销,建议优化KVM事件等待机制并检查中断配置是否合理,同时关注vhost网络
2025-10-12 05:27:29
194
原创 [英语单词] preemption granularity
摘要: "preemption granularity"(抢占粒度)指任务在被抢占前允许运行的时间长度。对于CPU密集型任务,操作系统需设定最小抢占粒度(如0.75毫秒*(1+ilog(ncpus)))以平衡性能与响应性。小粒度提高响应性但增加切换开销,大粒度提升吞吐量但可能降低交互体验。ilog(ncpus)表示以2为底的CPU核心数整数对数,使粒度随核心数对数增长,既减少多核切换开销,又避免粒度过大。该机制动态优化系统资源分配。
2025-10-11 14:28:45
732
原创 [英语单词] migration的内涵
本文探讨了迁移概念在不同领域的应用及其内涵。从Linux进程的CPU迁移(/proc/pid/sched中的nr_migrations)到OpenStack的live-migration技术,再到动物大迁徙现象,都体现了迁移的三个核心特征:延续性(保持运行/生存)、准备性(目标环境预先满足需求)和完整性(状态保留)。这种迁移理念广泛应用于云计算、数据中心管理等领域,本质都是为了确保迁移对象能够持续运作。无论是技术资源迁移还是生物迁徙,都遵循"继续活、继续运行、继续生存"的基本原则。
2025-10-11 07:58:23
219
原创 Linux: sched: 任务切换时重要的参数
文章摘要:RHEL9系统升级可能导致Linux内核调度参数位置变化,涉及三个关键CFS调度器参数:min_granularity_ns(最小调度时间)、wakeup_granularity_ns(任务唤醒阈值)和migration_cost_ns(任务迁移成本)。这些参数影响系统响应性、吞吐量和CPU利用率,不当调整会增加上下文切换开销(如__switch_to函数CPU占比上升)。间接影响还包括网络传输批处理等性能指标。这些调试参数位于/sys/kernel/debug/sched/目录,生产环境修改需谨
2025-10-10 09:37:34
162
ngrep,可以根据字符串过滤抓取包
2025-10-26
免安装的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关注的人
RSS订阅