云谷计算

高调做事,低调做人...

使用tcpdump和wireshark分析tcp流

Tcpdump抓包 tcpdump -w packets.pcap -n -i eth0 tcp port 60 and dst host 10.22.47.66 -i: 指定网络接口 -n: 不做域名解析,使用ip -w: 抓包存储为可供wireshark解析的pcap格式 tcp port 60 and dst host 10.22.47.66: 条件表达式 T...

IPv6学习笔记

IPv6协议 IPv6报文头部是定长(固定为40字节),IPv4报文头部是变长的。这个意味着,写代码处理IPv6数据报文的效率会提高很多:); IPv6中Hop Limit字段含义类似IPv4的TTL; IPv6中的Traffic Class字段含义类似IPv4中的TOS(Type Of Service); IPv6的报文头部取消了校验和字段:取消这个字段也是对IPv...

Ubuntu和CentOS定制内核驱动模块

背景 一些特殊设备的驱动程序或者内核模块,并没有被开机默认加载,比如reiserfs的内核模块reiserfs.ko。 内核模块方式的驱动一般在init ramdisk中,在grub中用initrd参数指定: menuentry 'Debian GNU/Linux' { ... echo 'Loading Linux 4.19.28 ...' linux /bo...

Linux和PCI的那点事

PCI & PCI-E拓扑结构 PCI采用的是总线型拓扑结构,一条PCI总线上挂着若干个PCI终端设备或者PCI桥设备,大家共享该条PCI总线,哪个人想说话,必须获得总线使用权,然后才能发言。 PCIe是点对点结构。一个典型的结构是一个root port和一个endpoint直接组成一个点对点连接对,而Switch可以同时连接几个endpoint。一个root port和一个...

Libvirt虚拟机IP地址静态绑定

背景 使用libvirt默认NAT网络创建虚拟机,发现即使Mac地址不一样的虚拟机,会分配到同样的IP地址,怀疑是dnsmasq服务的range功能有问题: libvirt默认的default网络: # virsh net-list Name State Autostart Persistent --------------------...

使用vmtouch管理指定文件的page cache

背景 Page Cache对内存的使用是贪婪模式,即尽量把空闲内存都用做文件page cache。如果系统需要比较频繁的分配大内存,会导致陷入slow path回收内存,带来内存分配延时甚至是超时失败。 一个比较极端的案例是写日志,在flush之后,page cache并不会释放掉,但是这样的page cache对系统没有任何正向帮助,我们应该尝试把这些page cache尽快释放掉。 ...

一次Linux服务器内存申请失败的优化

背景 在一个冷存储集群中(CPU 48C, 内存 256G),经常会有各种进程跑出类似下面内存分配超时错误: 28-159 kernel: [4395803.602414] python: page allocation stalls for 15412ms, order:1, mode:0x26040c0(GFP_KERNEL|__GFP_COMP|__GFP_NOTRACK) Feb...

三分钟搞定MacOS挂载NTFS写入问题

背景 MacOS插入U盘或者移动磁盘,如果是Windows NTFS格式,默认是只读模式,只能看不能用的感觉大家懂的。 Paragon NTFS 最简单有效的解决办法就是Money, Paragon NTFS是MacOS上老牌NTFS挂载软件,安装后可以免费试用一周,以后就必须付费了,目前的价格是¥149.00。我在MacOS Sierra版本购买过CleanMyMac,但是到了Moj...

Linux KVM虚拟机限制core dump大小

背景 Linux KVM虚拟机由qemu加载和引导,虚拟机的运行内存也都映射在qemu进程空间里面,导致qemu的rss内存一般都很大,比如这两个qemu虚拟机,看起来差不多分别是16G和8G内存规格的,都使用了2G左右的物理内存。如果qemu进程由于任何bug发生core dump, 可能会导致产生一个非常巨大的core文件。 top - 12:46:02 up 6 days, 13:...

深入理解Linux CPU使用率

查看CPU使用率 Linux CPU使用率主要是从以下几个维度进行统计: %usr:普通进程在用户模下下执行的时间; %sys:进程在内核模式下的执行时间; %nice:被提高优先级的进程在用户模式下的执行时间; %idle:空闲时间。 %iowait:等待I/O完成的时间。 %hi(hardware interrupt):处理硬中断请求花费的时间。 %si(s...