Everything you care about in one place

Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.

Get Feeder

ichenfu.com

C0reFast记事本

Get the latest updates from C0reFast记事本 directly as they happen.

Follow now 20 followers

Latest posts

Last updated 11 days ago

一个Solidigm P41 Plus的冷数据问题

12 days ago

现在用的笔记本电脑是公司去年发的HP EliteBook 640 G10,机器自带了一块Solidigm的SSD,从型号上应该就是P41 Plus的OEM版本,最近使用中发现机器越来越慢了,一开始以为是内存用的多,直到有一次重启发现了一些异常,这机器重启竟然需要20分钟的时间!重启进入桌面之后,系统也非常卡顿,完全没办法使用,好不容易打开任务管理器,发现磁盘一直100%占用,响应时间已经飙上了天。很显然,磁盘遇到问题了。问题分析由于和磁盘相关,赶紧用CrystalDiskInfo看看是不是出现0E错误了,之前三星还有其他品牌的SSD,出现0E问题的案例不少,要是有问题,我就赶紧备份数据准备报修换盘了。但是看了SMART信息,发现并没有什么异常,所有的数值都在正常范围内,连警告都没有,写入量也很低,不到30T:从数据上看一切正常,但实际表现呢?肯定还是有问题的,这时候开始怀疑是有些冷数据的问题,毕竟这块盘一开始使用的时候是没有问题的,现在使用了将近1年时间,刚好又是QLC颗粒,如果颗粒漏电导致需要ECC纠错的情况还是有可能的。拷贝测试尝试找了一个大文件,进行拷贝测试,看看实际的读写速度如何。看起来确实有点问题,一方面在拷贝过程中,速度会降到十几M/s,另外一方面,从任务管理器看磁盘的性能数据,延迟已经接近1s了,这个性能数据对于一块PCIe 4.0的NVMe SSD来说,实在是太差了。现在的性能基本就是一个大号U盘的水平了。底层读取测试感觉已经找到了问题,但还是有点不放心,比较拷贝文件这个动作,和文件系统,还有cache以及磁盘写入性能等等都相关,有没有什么工具可以绕过文件系统,直接读原始磁盘,并且不写入磁盘呢?这样可以更好的反映SSD本身的性能了,Linux下有个非常好用的工具fio,专门用于做类似的事情,不过使用起来有点麻烦,于是又想到另外一个工具:dd。相比fio来说,dd本身也不是一个磁盘测试工具,只能进行简单的读写操作,功能上也差距很大,但架不住简单啊,针对当前的需求,也够用了。于是就找到了一个DD for Windows,使用管理员权限的Powershell???行一下:PS C:\WINDOWS\system32> dd.exe if=\\.\PhysicalDrive0...

测试ARP/ND双发效果的小工具

22 days ago

在上一篇Blog里说了一下关于ARP/ND双发的实现,但是还遗留了一个小问题,就是如何测试最终的效果,毕竟正常情况下,ARP还有ND相关的报文,都是由内核协议栈根据需要发出的,不太稳定,总不能一直抓包等着内核发包吧?所以还是需要借助一些工具来实现。ARP双发检测ARP双发的测试还是比较简单的,毕竟大家都知道arping这个工具,可以用来发送ARP请求并接收ARP应答。使用起来也是非常顺畅的:# arping 192.68.100.1 -c 2ARPING 192.68.100.1 from 192.68.100.21 eth0Unicast reply from 192.68.100.1...

硬件Bonding卸载场景下的ARP/ND双发

about 2 months ago

大约在2019年的时候,公司的服务器接入网络架构开始向双上联去堆叠方向迁移,相比于之前老的接入网络而言,新的网络架构在各方面的提升都非常明显,尤其是在带宽利用率和冗余性方面,关于网络架构的部分,这里暂时就不多做介绍了,具体的可以参考京东以及H3C的相关分享和文档:异构去堆叠 | 一种完美提升网络高可用SLA的方案,H3C数据中心交换机S-MLAG最佳实践。在新的网络架构中,我们的方案是通过ARP转主机路由方式来实现网络层面的负载均衡和高可用的,这个方案有个依赖,需要主机实现ARP/ND相关协议包的双发。Bonding的双发问题为什么会有这个双发的需求呢?因为在我们选择的去堆叠方案中,主机的网卡是通过Bonding的方式来实现双上联的,要想实现对负载均衡和高可用的同时支持,Bonding的流量分载只能是基于hash的模式,这会带来一个问题:对于Host侧的ARP请求/响应报文,只会发送给某一台交换机,假设Host连接了LeafA和leafB两台交换机,当LeafA交换机的ARP表项即将过期,需要发送ARP请求探测Host状态时,Host回复的响应报文可能因为hash原因回复给LeafB了,这样一来,LeafA就无法及时获取到Host的最新状态信息,从而影响到整个网络的稳定性和可靠性。因为上面的这个原因,Host侧内核的Bonding模块必须作出相应的调整,将所有ARP的请求和响应报文,都进行复制,并在所有的子接口上进行发送。当然实现的方法并不麻烦,具体的可以参考龙蜥社区的实现anolis: bond: broadcast ARP or ND messages to all slaves。至此就基本解决了物理服务器层面对新接入网络架构融合的问题。虚拟化的网卡Bonding作为第一个接入新网络架构的虚拟化平台,只解决物理服务器层面的问题还不够,因为虚拟化的核心产品:VM的网络也需要解决。对于虚拟化业务的网卡,选择的都是Mellanox(现NVIDIA)的产品,不得不说,Mellanox的网卡对于虚拟化的场景来说,还是非常友好的,相比于普通的网卡而言,支持很多虚拟化相关的Offload特性,完全可以称得上是SmartNIC。对于Mellanox的网卡,有个比较重要的特性是OVS...

“无限”套娃,在WSL的Docker中使用YOLOv11做目标检测

3 months ago

前几天偶然发现,Windows 11的WSL2可以通过WSLg来无缝使用GUI应用。类似推理/训练等任务,都不在话下,这瞬间勾起了我的好奇心,决定试试微软提供的这个神奇功能。其实微软在2021年就发布了WSLg,现在已经是2025年了,刚刚开始折腾也算是后知后觉了。WSL支持GUI应用只能算是WSLg的一个最简单的功能了,当涉及模型训练或者GPU加速时,GPU驱动还有CUDA等等相关的配置就会变得复杂起来。我并不希望因为“折腾”这么一下,就把我的WSL环境搞得一团糟,这时候,Docker的价值就体现出来了。利用Docker,可以在不修改现有WSL环境的情况下,快速搭建一个隔离的环境来做些简单的测试。我决定使用YOLO作为测试对象,看看在WSL+WSLg+Docker的场景下,YOLO还能不能很好的工作,正确使用我的GPU进行加速。确认WSLg的正确安装理论上,WSLg是WSL默认启用的功能,当你安装完成WSL2,并且安装了Ubuntu等Linux发行版后,就可以直接使用GUI应用了。具体的安装方法,这里就不多说了,毕竟微软的文档在适用于 Linux 的 Windows 子系统上运行 Linux GUI 应用写的非常的详细:安装完成后,如果WSLg被正确启用的话,应该就可以看到:# mount|grep wslgnone on...

在三条指令内实现闰年判断

3 months ago

本文是A leap year check in three instructions的翻译,前两天在HackerNews上看到这篇文章,闰年的判断方法,从一开始学编程就是一个经典的练习题,但是深挖下去,作者只用了三条指令就能实现闰年的判断,感觉还挺有意思的,所以就翻译分享一下。省流不看版(基于DeepSeek总结):文章介绍了一种使用大约3个CPU指令实现快速闰年检查的方法。这种方法不同于标准算法(涉及模运算和分支),而是利用位操作和魔法数字,将闰年规则(能被4整除,但不能被100整除,除非能被400整除)巧妙地映射到对年份乘以一个常数后的结果进行位范围检查。这种位操作方法对于随机年份输入表现出显著的速度提升,并且针对特定范围已证明是最优解。这项优化技术涉及复杂的位运算细节。以下是原文的翻译:通过以下代码,我们可以在大约 3 个 CPU 指令内检查 0...

一个中断关闭时间太长导致的网络延迟问题

4 months ago

近期线上出现了一个问题,现象是有一台机器,网络出现了不定时的延迟:# ping -i 0.05 192.168.0.5#...64 bytes from 192.168.0.5: icmp_seq=673 ttl=63 time=0.203 ms64...

一个Linux新老内核对于硬件中断的统计差异

5 months ago

最近接到一个客户反馈,说他们的机器,遇到了top命令中,hardirq的值特别高的问题。top - 15:27:37 up 43 days, 3:42, 1 user, load average: 44.75...

IPIP隧道导致的DPDK收包RSS队列不均匀问题

8 months ago

最近线上出现一些VM网卡收包队列不均匀的问题,即使是将网卡队列中断均匀的绑定到各个CPU上,依然会出现某个核特别高的情况:%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni, 98.3 id, 0.0 wa...

在KVM虚拟机中开启TSC作为时钟源

9 months ago

上一篇x86平台的TSC(TIME-STAMP COUNTER)中大概分析了一下TSC的一些相关的特性,以及TSC作为系统时钟源的一些基础条件。那么,在虚拟化的场景下,如何让Guest也用上TSC呢?这篇文章就来讨论一下TSC在KVM虚拟化中的使用。基础分析默认情况下,KVM虚拟机首选的时钟源是kvm-clock,即使将VM的CPU Model设置为host-passthrough,也不会使用TSC作为时钟源。# lscpu|grep FlagsFlags: fpu vme de pse tsc msr pae...

x86平台的TSC(TIME-STAMP COUNTER)

10 months ago

今天跟着Intel的开发手册,看看如何随着Intel对TSC不断的修改和增加新特性,让TSC从一个简单的性能计数器发展成当前Linux上x86平台最重要的时钟源之一。本文基本上可以看作是Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3B: System Programming...

一个UFO引发的惨案

over 1 year ago

首先需要解释一下标题,原谅我当了一回标题党,此UFO不是Unidentified flying object,而是在网络中的一个Oflload卸载技术UDP fragmentation offload。事情的起因是这样的,我们最近尝试将线上的虚拟机,从基于网卡SR-IOV+直通的方案,切换到基于DPDK+vhost-user的方案,以换取热迁移的效率提升。从之前的模拟压测和线上灰度效果来看,新的DPDK方案的性能和稳定性都处于很好的水平,在我们的场景下可以很好地满足需求。直到灰度到某个业务的时候,发生了一些问题,导致了虚拟机的网络中断。我们通过热拔插方式进行网络切换,首先,会把当前直通的网卡从虚拟机中热拔出来,然后,再把一个vhost-user网卡热插到虚拟机中,从而实现网卡的切换。在切换过程中,大致会有3-5s左右的网络中断,但根据和业务的沟通,在单线程的操作情况下,这样的中断是没有问题的,不会影响业务。为了保证业务的稳定,我们在网卡切换后,会持续ping 10s对应的虚拟机,确保网络正常后才会进行下一台的操作。然后问题就发生了,在某些虚拟机切换网卡之后,大约5分钟内,网络是正常的,但是超过5分钟之后,突然网络就不通了,这个问题也是随机的,而对于网络不通的机器,通过重启DPDK进程的方式,网络又可以恢复几分钟,然后继续不通。这些现象确实在之前的测试中没有遇到过。从日志看,有少量的DPDK进程打印了这两条日志:VHOST_DATA: (/tmp/ens8f0-2.sock) failed to allocate memory for...

DIY一个8盘位全闪NAS

over 2 years ago

接上篇LSI RAID卡芯片和各个OEM对应卡型号列表里说的后续DIY NAS的想法,经过快3个月的时间,终于来更新整个DIY过程了,总结起来在整个过程中,收获的主要还是折腾的乐趣,要说折腾的尽头是白群晖,随着时间的推移,个人还是比较认同的,不过不得不说白群晖确实太贵了,都说群晖是买软件送硬件,但是这软件也太贵了点。需求描述和分析说起来,为啥会有个DIY NAS的需求呢?一个重要的原因是家里的小宝贝出生了,不知不觉也拍了好多的照片和视频,还是希望能更长久的把这些记忆保留下来。另外呢,之前更新自己的电脑,淘汰下来一套i5 6500 CPU加16G内存以及主板的准系统,买个机箱还有电源就直接可以用了,本着废物利用的原则,做个NAS也不亏,而且还多了很多可玩性。其实单纯从保存数据来说,将数据存放到任何一个公有云的对象存储上,是个最终极的方案,因为目前各个厂商提供的对象存储数据持久性SLA都达到了11或者12个9(99.999999999%-99.9999999999%),这基本意味着几乎不存在数据丢失的可能性了。但是确实这个方案也是最贵的,毕竟每TB存储每月都需要消耗对应的存储费用,随着时间增长,即使是最便宜的冷归档类型,也依然是个不小的消耗。那到底需要多少的存储容量呢?针对我个人而言,目前可预见的容量,应该不会超过10T,当前1-2年内所需求的容量更小,大概只需要1到2T的样子。针对这个容量,其实已经可以考虑全SSD的存储方案了,其实相比于使用HDD的方案,纯SSD的NAS有以下几个好处:首先是噪音角度,相比HDD运行时的“炒豆子”声来说,SSD 0噪音,这可以直接解决夜间安静环境下HDD低频噪音对睡眠质量的影响;其次是稳定性和数据安全角度,根据我们公司数据中心有比较大规模的SSD和HDD的使用经验,同时参考backblaze提供的统计数据,可以看出SSD的稳定性远超过HDD,这带来了两个优势,一个是相比HDD,SSD损坏的概率低,这可以减少存储池修复的可能性,另外因为读写速度上SSD快很多,在坏盘的情况下,SSD也可以做到更坏的修复速度,从而可以提供更好的数据持久性。当然SSD依然还是有缺点的,很明显当前SSD比HDD依然贵很多,以当前的价格来说,SSD成本大约0.4元/GB(大多数1T SATA SSD),HDD大概只有0.12元/GB(西数HC550 16T)。但是对于我目前的容量需求来说,使用SSD的成本相比HDD没有差距太大,多花的那部分成本,对于0噪音来说是相当值得的。除了磁盘的选型,还有一些其???的需求,诸如盘位数量大于等于4,硬盘需要支持热拔插,存储池可以动态扩容,移动端、桌面端数据自动同步等等,不过这些也都算是比较基础的需求了。硬盘笼选择针对硬盘热拔插的需求,肯定还是要搞个硬盘笼的,不管怎么说,相比于直接把硬盘塞机箱里,有个热拔插硬盘笼一下子逼格就上来了。所以一直花了不少精力去找合适的硬盘笼,主要还是集中于服务器的拆机件,这里给几个当时考虑的一些方案。浪潮12盘位3.5寸硬盘笼首先第一个选择是买浪潮的12盘位3.5寸硬盘笼,目前的价格大概150块钱的样子,还挺便宜,感觉应该都是当初Chia矿老板淘汰下来的,这些硬盘笼基本都有大4P的电源接口以及MiniSAS(SFF8087)接口,使用起来还是比较方便的,当然缺点是确实占地比较大,毕竟是适配的2U机箱,因为本来也一直坚持全闪的方案,所以3.5寸的硬盘位就没有必要了,即使很便宜,依然放弃了这个方案。Intel 8盘位热插拔笼子(8 AnyBay)这是Intel一个颜值和功能都超级能打的硬盘笼,具体的参数可以参考Intel的Spec文档(不得不说Intel的文档写的是真的好),甚至当前这个时间点,依然在量产状态,这个笼子一般来说都是在2U机箱上做竖插24盘位的组件的,这几乎是我心目中最理想的硬盘笼选择,8盘位AnyBay,支持SATA、SAS、U.2...