虽然我知道很多数据包处理(CRC 计算、数据包分段处理等)可以卸载到 NIC,但是每个数据包是否仍然会导致 CPU 中断?如果网卡处于混杂模式,有什么区别吗?
我创建了一个基本的 Linux 内核模块,它执行以下操作:
static __init int init(void)
{
printk(KERN_DEBUG "Banana");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
而且当然:
module_init(init);
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我通过插入模块后找不到字符串“Banana”
insmod banana_module.ko
Run Code Online (Sandbox Code Playgroud)
命令
dmesg -k | grep Banana
Run Code Online (Sandbox Code Playgroud)
不返回任何内容。
但是,当我卸下模块并再次插入时,我可以找到它。然后我找到了两根香蕉,一根是之前的,一根是当前插入的。这是由于冲洗问题吗?我觉得这种行为有点奇怪,在互联网上找不到类似的问题。
顺便说一句,这种情况发生在我的台式机和笔记本电脑上的虚拟机(没有虚拟机)上。
那么,为什么内核不喜欢香蕉呢?
我在module-init目录中看到名为weak-modules*.
bash # ls /usr/lib/module-init-tools/weak-modules*
/usr/lib/module-init-tools/weak-modules /usr/lib/module-init-tools/weak-modules2
Run Code Online (Sandbox Code Playgroud)
到底是什么?以及什么时候使用它?我认为它是在初始化模块时使用的,因为它存在于module-init目录中。
我在 Arch Linux 计算机上运行的内核版本如下:
[root@router ~ ]$ uname -a
Linux router 4.2.5-1-ARCH #1 SMP PREEMPT Tue Oct 27 08:13:28 CET 2015
Run Code Online (Sandbox Code Playgroud)
我注意到每次我通过sysctl -a管道输入 grep 命令时我都会收到以下消息
[root@router ~ ]$ sysctl -a | grep no_meaning
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
...
Run Code Online (Sandbox Code Playgroud)
对这些文件运行 cat:
[root@router ~ ]$ cat /proc/sys/net/ipv6/conf/all/stable_secret
cat: /proc/sys/net/ipv6/conf/all/stable_secret: Input/output error
[root@router ~ ]$ ls -hl /proc/sys/net/ipv6/conf/all/stable_secret
-rw------- 1 root root 0 Dec 24 14:57 /proc/sys/net/ipv6/conf/all/stable_secret
Run Code Online (Sandbox Code Playgroud)
到目前为止我还没有看到任何不良影响,但我想知道这是否正常,特别是这些stable_secret键的功能是什么?提前致谢。
我在 Windows 8.1 主机上安装了最小的 CentOS 7 作为 VirtualBox 5.0.16 r105871 来宾。 uname -r报告“3.10.0-327.10.1.el7.x86_64”。
当我尝试运行时,VBoxLinuxAdditions.run出现错误“找不到当前正在运行的内核的标头”,并建议我这样做yum install kernel-devel-3.10.0-327.10.1.el7.x86_64。然而yum list kernel-devel显示已经安装(按原样kernel-headers和适当的版本)。
添加一些日志记录vboxadd,我发现它正在寻找标头,其中/lib/modules/3.10.0-327.10.1.el7.x86_64/build结果是指向缺失的死链接/usr/src/kernels/3.10.0-327.10.1.el7.x86_64。确实,/usr/src/kernels/是空的。
谷歌搜索表明,许多版本的 CentOS 需要 VBGA 补丁才能安装工作,但我没有看到任何特定于 CentOS 7 的此类注释或涉及缺少内核头文件的注释。
如果我从 kernel.org 编译最新的内核,制作一个 deb 包并将其安装在我的 Debian 系统上,我是否应该担心 libc(和任何其他库?)和内核不同步?
我模糊地理解内核开发人员努力不破坏暴露给用户空间的 API/ABI,但我想偶尔会发生中断,至少出于某些合法原因?如果是这样,是否有地方记录工作 libc 版本与内核版本的映射?
当我昨天暂停系统时,工作并没有终止,systemd-suspend.service从那以后我的工作一直处于不间断的睡眠状态:
# systemctl list-jobs
JOB UNIT TYPE STATE
21595 post-resume.target start waiting
21593 systemd-suspend.service start running
21592 suspend.target start waiting
21596 post-resume.service start waiting
# systemctl status systemd-suspend.service
? systemd-suspend.service - Suspend
Loaded: loaded (/nix/store/2jspk70lir7jcn1krax8haw2j7486i3a-systemd-243.3/example/systemd/system/systemd-suspend.se>
Active: activating (start) since Sat 2020-04-04 03:07:36 CEST; 23h ago
Docs: man:systemd-suspend.service(8)
Main PID: 16761 (systemd-sleep)
IP: 0B in, 0B out
Tasks: 1 (limit: 4915)
Memory: 1.0M
CPU: 20ms
CGroup: /system.slice/systemd-suspend.service
??16761 /nix/store/2jspk70lir7jcn1krax8haw2j7486i3a-systemd-243.3/lib/systemd/systemd-sleep suspend
Apr 04 03:07:36 phlegethon systemd[1]: Starting Suspend...
Apr 04 …Run Code Online (Sandbox Code Playgroud) 我们有月球服务器 - 版本 rhel 7.5
在这台服务器上消费swap的行为很奇怪
我们将其配置/proc/sys/vm/swappiness为 1 并重新启动服务器
但是我们可以看到服务器正在吃15G,而可用的是44G!
怎么可能??
[root@moon01 network-scripts]# more /proc/sys/vm/swappiness
1
[root@moon01 network-scripts]# free -g
total used free shared buff/cache available
Mem: 125 80 38 0 6 44
Swap: 15 15 0
Run Code Online (Sandbox Code Playgroud)
根据我的理解,只有当可用接近最后几千兆内存时,交换才会增加
但情况并非如此
我正在使用 debian,当我只是检查我的文件系统时没有vmlinuz文件,经过一些谷歌搜索后,许多没有 vmlinuz 的用户无法启动,但我的计算机启动良好。还有一个损坏的符号链接指向它,/boot/vmlinuz这让我非常确定它在我之前安装 debian 时就在那里。这是正常的还是出了什么问题?我曾经删除过引导分区,但我认为我可以修复它(之后我没有做任何与内核相关的事情)。是这个原因吗?我怎样才能把它带回来。而且我initrd.img的 72MB 大小不是很大吗?
当我们sysctl -p在我们的 rhel 7.2 上运行时,server1我们得到
sysctl -p
fs.file-max = 500000
vm.swappiness = 10
vm.vfs_cache_pressure = 50
sysctl: cannot stat /proc/sys/pcie_aspm: No such file or directory
net.core.somaxconn = 1024
# ls /proc/sys/pcie_aspm
ls: cannot access /proc/sys/pcie_aspm: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是,当我们运行sysctl -p其他的server2如
我们得到了没有错误的好结果
sysctl -p
fs.file-max = 500000
vm.swappiness = 10
vm.vfs_cache_pressure = 50
net.core.somaxconn = 1024
Run Code Online (Sandbox Code Playgroud)
该文件 -/proc/sys/pcie_aspm此服务器上也不存在 ( server2)
那么为什么sysctl -p失败server1呢?