- 博客(1548)
- 资源 (19)
- 收藏
- 关注
原创 Linux: dev: cmake --help-policy CMP0115
今天遇到一个新的policy,有点奇怪,感觉老的行为更方便一点。算是cmake新版导致的一个行为改变。继续使用原来的行为。
2025-05-08 05:45:26
383
原创 [晕事]今天做了件晕事75 as: unrecognized option ‘--gdwarf-4‘
说是不认识的as选项。那就是gcc传递进来的这个参数,as不认识,最后调查的原因是在本地手动编译过gcc-11 这个版本,但是as对应的版本是8.5。binutils和gcc的版本不匹配导致。
2025-05-08 05:39:58
253
原创 Linux:network: errno :101 destination unreachable
这个原因是:route cache的最大个数值设置的太小,只有4K。如果系统需要的cache记录很多,导致后续的添加不上了,就会出现destination unreachable。在内核的log里应该会有很多相关的日志。最近看到一个destination unreachable的例子,这个问题的情况还是第一次遇到,记录在这里以防下次碰到类似的问题。后来系统的默认设置都非常大。应该出现的几率非常小。
2025-05-07 11:10:06
12
原创 第一次听说:dell avamar 备份恢复产品
Avamar服务器则是整个系统的核心,负责存储、管理和恢复备份数据。Dell EMC Avamar是一种备份和恢复解决方案,它通过先进的技术和功能帮助企业实现数据保护目标。快速备份和恢复:Avamar的去重技术使得备份速度显著加快,同时支持快速数据恢复,确保业务连续性。扩展性:Avamar服务器可以轻松扩展以支持更多的数据和客户端,适应企业不断增长的需求。集中管理:Avamar提供集中管理和监控功能,使企业能够轻松管理备份任务和资源。安全性:Avamar提供强大的加密功能,确保备份数据的安全性和完整性。
2025-05-07 09:38:52
7
原创 Linux: zmq: memory leak,隐藏的坑
这个就比较烦人了,因为没有根本解决,就是一个隐藏的坑。每个人都有很大概率会遇到相似的问题,而且遇到问题的人都需要从网上搜索,查看这个问题,然后找到workaround。下面这个链接,说了一个zmq可能产生memory leak的场景。所以谁有时间来调查问题?
2025-05-06 11:43:45
98
原创 Linux: tools: memory: valgrind: massif
提到了使用masif来分析问题。发现使用这个工具可以查看heap的使用详情,这个是非常有用。有时候使用valgrind的memcheck工具,检查不到问题,因为这个内存一直到程序退出的时候才会释放。工作中肯定会有此类问题。所以这个工具还是相当有用的。
2025-05-06 10:00:37
118
原创 [英语单词] from under
意思是我们还在使用这些数据,绝不许被删除,可能导致诸如segv之类的严重问题。所以需要使用rcu_read_lock和rcu_read_unlock来包围,读取代码段。最近在看RCU的资料,读到下面的一句,感觉总是特别怪怪的,就是从单词的组合角度,记录一下。,这些数据是我们站立的一个基石,绝不能被删掉。
2025-05-02 19:24:20
326
原创 学习:困?
在多处理器的系统中,软件必须考虑到,除了参与分页结构条目修改的当前处理器之外,其他的处理器的TLB和分页结构缓存中可能也有这个分页结构条目。其实困的主要原因是,在大家的对当前上看的整体逻辑思路不清晰,脑力训练不够。比如下面这一句,就比较长,其实要在脑子里需要一个可用存储信息的栈空间,来整体理解这个话的含义。当然数学课,需要的栈空间,内存空间,关联空间会更大。在包含多个逻辑处理器的系统中,软件必须考虑到,除了用于修改分页结构条目的逻辑处理器之外,其他逻辑处理器的 TLB 和分页结构缓存中可能存在条目。
2025-05-02 19:10:41
691
原创 Linux: filesystem: fcntl
原因是:建议性锁:fcntl 设置的锁是建议性锁(advisory lock),而不是强制性锁(mandatory lock)。锁的范围:确保锁正确应用于文件的预期部分。在示例中,锁被设置为覆盖整个文件(l_start = 0 和 l_len = 0),这应该锁定整个文件。如果另一个进程使用不同的文件描述符打开文件,它也必须使用 fcntl 来检查锁,然后才能执行操作。锁的类型:确保锁的类型正确设置为写锁(F_WRLCK)。即使用下面的代码,将一个文件lock住,仍然不能控制器别的程序不能修改文件。
2025-04-29 07:42:28
16
原创 Linux: network: ipv6 mtu设置的限制,sysctl这条路
在修改设备的ip6MTU的时候,使用sysctl设置的这条路和ip link 修改的这条路是不一样的。这里注册的时候设置的。这里的extra2就是最大值的一个限制。
2025-04-29 07:40:32
130
原创 [晕事]今天做了件晕事74,mtu变了?1396
然后做了一个ping操作,要ping消息的大小是1400(但是加上ICMP6,IP6的头信息,总长度会超过1400)因为在GRE6隧道的peer端路由有一个设置,2620:0:62:124::911这个IP是隧道的另一端IP。去掉GRE需要的 44个字节,再去掉分片头8个encaplimit的预留,就是1396。在gre6的tunnel接口上设置的是1456;看了半天也没搞懂为什么本机回的这个mtu:1396是在哪里设置上去的!这里的580 sec,是大约10分钟的时长,就是这个MTU的有效时间。
2025-04-28 07:58:17
30
原创 Linux: network: gre6: mtu:encap_limit 多占用MTU的值;
这个是必须知道的一个知识点。要不就不要自己设置gre6相关MTU,以及相关route的MTU。
2025-04-28 06:10:01
152
原创 [晕事]今天做了件晕事73,添加操作与删除反着来?
最近做了一个配置大量IP的一个改进功能,在内存里存放这些IP的数据结构是一个数组。添加是挨个添加,在删除的时候,会遍历整个数组,找到相应的元素,做一些其他的处理,中间还会用到这个数组,处理完成之后,然后再删除。这个时候,如果所有的IP都做删除,这个时候,也行选择从后往前删,效率更高一些。要看具体的代码处理逻辑。
2025-04-24 10:36:53
118
原创 Linux:network:multicast 问题 VMware平台问题 又一例
VMware平台维护的同事说修改了一下配置,将IGMP的配置设置为默认值,并且将下面这个组播地址添加进来:Multicast range (224.1.1.0/24).后续的就没有问题再出现。看来VMware平台维护的人动了IGMP相关的配置。最近发现从其他VM过来的组播包,不时的有丢包的问题,从VM上抓包,源地址已经发了,就是在目的VM上抓不到。你要是问我具体是什么原因,我上回答不上来,因为没有再往下继续研究,因为访问不到底层的信息。这个时候就是没有别的办法了,就是VMware底层提供的虚拟网络有问题。
2025-04-23 09:11:13
252
原创 [晕事]今天做了件晕事72,取模运算,多线程同步
解释,假如两个线程,同事获取到cnt_snap的值是49,然后两个线程先后做loc_cnt的加加,接下来的cnt_snap的值可能是51。在代码里,多线程可能调用到的一个代码片段里,定义了一个临时变量,临时存放多线程可访问的变量,然后做取模运算。所以,最好的方式,是按照增量来做判断,如果增量大于50做相应的逻辑。最近在看一个问题,应该是一个多线程同步的问题。
2025-04-23 09:10:28
114
原创 Linux: network: UDP receive drop一例,recvbuff设置太小导致
因为业务量增加导致有些UDP的包丢了,继而导致业务处理受到影响。最后查看是因为socket的receive buff size设置是128K(内核里乘2是256K)这个文件的最后一列是drop的计数。修改buff到256K(内核512K)业务恢复正常。相应的错误计数使用netstat -s查看。
2025-04-22 10:12:04
468
原创 Linux: log:logrotate: diskspace full,rotate失败
如果磁盘空间不够用,logrotate就会失败,然后产生一个backup文件。logrotate有没有功能,可以不复制做压缩,或者将大文件删除掉?
2025-04-22 09:47:09
38
原创 Linux: network: qemu-kvm: tap 丢包?延迟
最近遇到一个现象上看是: 网络丢包的问题,问题点是host主机上创建的一个tap设备,名称是vnet22,和对应虚拟机上的virtio-net设备,名称是int0,之间,从vnet22上抓包可以看到,但是在int0上没有抓到。后续仔细看wireshark,根据IP里的id字段看,是vnet22发的包到了int0,但是时间上有delay,而后续重传的包没有deliver到int0,这个可能是qemu-kvm的实现机制问题。进一步分析为什么有delay,发现虚拟机上起了太多的高消耗CPU进程。
2025-04-21 07:57:28
28
原创 gdb:backtrace:显示问号又一例
那为什么内存错乱呢?因为这个程序是多线程,主线程已经进入到了exit过程,而上面那个对象所引用的是一个全局对象,所以内存已经被释放,这样已经进入到了未定义行为状态。出现coredump也不为过。发现这里的vtable的指针指向的完全不算SocketStream 类的虚函数表,而是INetSocket类的,所以说是内存完全就错乱了。dump这个虚函数表内容。这样算下来,call的地址就是0了,所有就出现了问号的显示。反汇编frame-1,dump寄存器。通过p命令查看stream对象。
2025-04-21 07:56:12
128
原创 Linux: security: openssh: ssh-agent: SSH_AGENT_PID;sigterm;systemd
在使用 systemd 时,可以通过配置服务单元文件来设置程序的返回值。通常,systemd 会将返回值非零视为错误,但可以通过 SuccessExitStatus 指令来指定哪些返回值应被视为成功。这样,systemd 就会将返回值 2 视为成功,而不会将其视为错误。exit返回的值是2;所以如果需要将ssh-agent设置为systemd的一个服务,需要对这个服务的返回值做特殊处理,怎么。可以根据环境变量kill之前的ssh-agent进程。之后,你可以重新启动或重新加载相关服务以应用新的配置。
2025-04-18 03:08:19
230
原创 Linux: command: timedatectl set-timezone, chrony, ntp
这个可以查看状态,比如下面的ntp链接有些问题。最终调用的是系统调用:adjtimex。是systemd提供的一个命令来查看时间相关的信息。
2025-04-18 03:05:23
159
1
原创 [晕事]今天做了件晕事71,_GNU_SOURCE
通过搜索发现需要include的头文件就是:netinet/in.h。加上这个头文件,还是出现找不到结构体的错误。最后通过仔细查看头文件,发现,这个结构体定义是在宏判断里:#ifdef __USE_GNU。说明要是有gnu相关的扩展功能。
2025-04-17 05:18:31
85
原创 [晕事]今天做了件晕事70,英语理解drop
其实这里的drop暗含的意思是丢下,也就是这个东西必须在手上,才能丢,如果本来就是在地板上,怎么再丢呢?为什么在脑子里会有,第二种理解的可能。感觉on the floor修饰packet。
2025-04-17 05:03:21
239
原创 Linux: network:synchronize_net
最近在看一个关闭af-packet的socket慢的问题,在相关的代码调用路径里有这个函数。synchronize_net 是一个用于网络子系统中的同步操作的函数。它确保在调用该函数之前启动的所有网络处理(例如软中断处理、定时器处理等)都已经完成。这对于确保网络子系统的安全更新和删除操作非常重要。具体来说,synchronize_net 的作用是等待所有正在进行的网络处理完成,以确保在进行某些关键操作(例如删除网络设备或修改网络配置)时不会有并发访问导致数据不一致或系统崩溃。
2025-04-16 03:27:56
41
原创 gdb: intel: movsl
这里的0x9c83c是一个字节数,不用再乘4. 641084+260729*4 = 1684000,这个可以计算ok没问题。最后发现,是传递进来的源内存地址空间,在copy的时候超出了时间new出来的内存空间。也就是第三个参数的值传递进来的错误了。根据esi/edi的值和传递进来的参数对比,差值是0x9c83c,说明已经copy了这么多的数据。在实际的内存分配是:638976,和641084差不多,所以可能还是内存分配的问题。memcpy传递进来的参数值。还是在说是内存访问错误。
2025-04-10 13:51:24
36
原创 gdb: 怎么查看vector的内容
这里是iMessages向量的第i个元素,然后调用所存类的成员函数:IncomingMessage。提示:You can’t do that without a process to debug.如果有一个vector的变量,在程序里可能使用所以来使用比如。怎么看这个vector里的内容呢?
2025-04-09 15:06:22
43
原创 gdb: backtrace: 显示问号的一个情况
在glibc的sysdeps/i386/i686/memcpy.S文件理,memcpy函数,在代码段理会向栈push一个eax,然后在调用movsl的时候出现coredump,这个时候,push eax这个操作会导致栈上的内容不全,从而导致gdb推理出现混乱。其实要根据gdb function backtrace的实现来说,它就是依据当时的esp/ebp寄存器的值,来往前推理整个函数调用栈。function backtrace如下,而且frame-1显示是一个无效的代码地址,然后显示了问号。
2025-04-09 13:04:45
181
原创 Linux: network: tcpdump: packets dropped by kernel
捕获缓冲区大小不足:tcpdump 使用的捕获缓冲区大小可能不足以容纳所有的数据包。捕获过滤器效率低:如果使用的捕获过滤器效率低,可能会导致内核处理更多的数据包,从而增加丢包的可能性。系统资源不足:如果系统的CPU或内存资源不足,可能会导致内核无法及时处理所有捕获的数据包,从而导致数据包丢失。网络流量过高:当网络流量非常高时,内核可能无法及时处理所有的数据包,导致部分数据包被丢弃。系统配置问题:某些系统配置可能会影响数据包捕获的性能,例如网络接口的配置、内核参数等。优化捕获过滤器,减少不必要的数据包捕获。
2025-04-08 15:05:32
766
原创 英语学习:单复数宏
在tcpdump的代码里对单复数的判断还有宏定义,第一次看到。这个单复数的语义还是非常的重要,尤其是用在合同/法律/等需要严格定义的地方。
2025-04-08 14:42:44
88
原创 ML:Sigmoid 饱和函数
当输入值 ( x ) 很小时, ( e^{-x} ) 会趋向于无穷大,导致 ( \sigma(x) ) 接近于0。在这些极端情况下,函数的输出变化非常小,即进入了饱和状态。总的来说,这篇论文确实非常重要,因为它为神经网络的计算能力提供了理论证明,并且在计算理论和人工智能领域产生了深远的影响。当 ( \sigma(x) ) 接近于0或1时,导数 ( \sigma’(x) ) 也会非常小,这进一步解释了饱和现象。理论基础:这篇论文为神经网络的理论基础提供了重要的贡献,帮助研究人员理解神经网络的潜力和局限性。
2025-04-07 14:35:58
387
原创 Linux: network :创建raw socket的时候
如果注册的是arp层的raw socket,最终二层ARP的处理是通过遍历ptype,会顺序调用arp_rcv/arp_process来完成neigbor的更新等操作,也会调用packet_rcv来将数据传递到socket上。创建socket的函数packet_create,会注册一个 packet_rcv相关的回调函数。这个函数负责将packet,skb的对象,放到socket queue里。
2025-04-07 14:34:53
185
原创 ML:Non-deterministic Turing Machine,简称 NTM
非确定性图灵机(Non-deterministic Turing Machine,简称 NTM)是一种理论计算模型,它与确定性图灵机(Deterministic Turing Machine,简称 DTM)类似,但有一个关键的区别:在每一步计算中,非确定性图灵机可以有多个可能的转移,而不是像确定性图灵机那样只有一个确定的转移。多重选择:在给定的状态和读到的符号下,非确定性图灵机可以选择多个不同的动作(例如,移动读写头、改变状态、写入符号等)。并行计算:非确定性图灵机可以被视为同时探索所有可能的计算路径。
2025-04-04 16:21:43
246
原创 Linux: network: 两台直连的主机业务不通
最近遇到一个问题,说一个主机发的包,没有到对端,一开始怀疑设定的bond设备的问题,检查了bond的设置状态,发现没有问题,就感觉非常的奇怪。所以问题的根本是,现在两台主机不是直连的状态。STP消息(BPDU,Bridge Protocol Data Units)主要由网络中的交换机设备发送和处理。这些虚拟交换机也支持STP协议,并会发送和处理STP消息,以防止虚拟网络中的环路。主要发送和处理STP消息的设备包括交换机、网桥、集成了交换功能的路由器、高级无线接入点、网络管理设备以及虚拟交换机。
2025-04-04 16:17:52
471
原创 英语学习:读科技论文的难处
每个处理单元,通过应用“sigmoidal” 标量非线性化,在所有单元之前状态的线性组合结果之上,然后形成一个新的数值,最后来更新自己的状态。其实这一句英语代表了一个过程,首先是需要所有单元之前的一个状态的线性组合,然后应用S标量非线性化,然后再更新状态。英语是完全的倒装了整个过程。每个处理器通过将“sigmoidal”标量非线性应用于所有单元的先前状态的线性组合来更新其状态。而且还要面临语言的差异性困难。比如这一句怎么翻译比较合适?我们就知道自己到底欠缺什么知识了,那是一个挨着一个的缺。
2025-04-03 05:18:42
633
原创 gdb: Python Exception <class ‘NameError‘> Installation error: gdb._execute_unwinders function is mis
这个方法的副作用是,会将所有的错误都输出到/dev/null,万一是其他命令执行错误,需要查看错误信息的时候,就不好办了,比如,如果一个数据类型的大小超过了max-value-size的大小,会有一个错误的提示,这个时候就看不到了,需要注意。如果编译gdb,不带python的支持,运行的时候会有下面这个提示,调试的时候,每一步都可能打出来这个警告,非常不友好,其实打一次就够了。所以可以考虑,将这个错误导向一个不用的临时文件?怎么抑制这个警告不停的打印呢?这个方法,会遇到问题。
2025-04-03 05:16:10
39
原创 [英语单词] Propagation
在工作中也经常用,尤其是软件版本管理里,如果产品维护的版本,分支比较多,在一个分支上的bug fix,可能要propagate到所有的分支。这个词propagation,如果是单按照传播是没有方向的,需要加一个参照物,或者背景之后,才能说是前向的还是后向的。相当于replicated 页表结构的改动传播到其他的processor。back-propagation,反向传播。【医】 传播, 繁殖, 持续培养。n. 增殖, 繁殖, 宣传。
2025-04-02 07:14:00
180
原创 英语单词: stride
这个是线性代数里的跨度概念,像几何里的三维物体,有长,宽,高。线性数据的表示也有:行,列,stride。n. 大步, 步幅, 步态, 进步。vt. 迈大步走, 跨过, 跨。vi. 迈大步走, 跨过, 跨。
2025-04-02 06:53:17
115
原创 Linux:glibc: No such file or directory
最后调查是,这个程序是32位的程序,而当前机器没有安装相应版本的glibc,导致没有相应的动态解释器:/lib/ld-linux.so.2。最后,还是要说一下,这个execv的返回值,找不到文件,也没有打印出来到底是哪一个文件没有。这个让人比较苦恼,如果可以直接知道哪一个文件缺了,问题就好解决了。可以确保当前文件夹下面有这个文件。使用strace和ldd显示下面的结果。是不是感觉没有思路,怎么可能是这个情况呢?最近编译了一个程序,运行的时候出现错误,
2025-04-01 13:49:25
153
免安装的perf程序,基于内核4.18.0-553.27.1
2024-12-07
C,删除无用ifdef宏的工具
2023-02-03
MTU 相关知识总结点(一)
2022-10-17
ip添加vlan interface的strace日志
2022-03-29
Netlink 实际操作代码,实际可以参考iproute源代码做,这里只是方便自己使用的一个样例
2022-03-12
免安装strace strace.zip
2021-07-20
Net-Interface-1.016.tar.gz
2021-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人