我有一台运行 CentOS 6.2 内核版本 2.6.32 的服务器,但我需要提高我的应用程序性能。
内核版本 3.4 有 x32abi 可以提高性能,所以我想升级到 3.4?是否可以?
我尝试下载内核编译和安装,但仍然看到相同的内核版本..
什么地方出了错?我遵循了下面链接中提到的过程。
http://www.tecmint.com/kernel-3-5-released-install-compile-in-redhat-centos-and-fedora/
3s 的初始 TCP RTO 值对于大多数基于 LAN 的应用程序来说太长了。我怎样才能调低?有sysctl吗?
大多数情况下,当我的计算机开始需要交换时,我会看到 CPU 使用率大幅飙升(kswapd0始终使用 99%-100% CPU)。根据top,时间花在sy(系统/内核)而不是wa(IO等待)上。
我在具有 2GB RAM 的 C720 上运行 Linux 4.0.4-2-ARCH,在 SSD 上运行 6GB 交换。
无论是否打开丢弃页面(TRIM),我似乎都有这个问题。
是否有任何设置我应该检查或调整以查看是否可以解决此问题?
有什么办法可以调试问题吗?类似于strace内核线程?
使用默认的 Arch Linux 设置运行:
/proc/sys/vm/swappiness= 60
/proc/sys/vm/vfs_cache_pressure= 100
/sys/kernel/mm/transparent_hugepage/enabled=[always] madvise never
我今天有一个谜团要告诉你。我们在 Azure 上运行一个基于 CoreOS (2023.5.0 / Linux 4.19.25-coreos) 的小型三节点 Elasticsearch 集群。Elasticsearch 在主机网络模式下的 docker 容器内运行。在几乎完全免维护运行一年多之后,我们看到机器进入了一种非常有趣的状态。
此问题已通过修复Linux 内核中的驱动程序解决。请参阅下面的答案。
基本上,受影响的机器和其他两个节点之间的网络连接失效。它们都在同一个虚拟网络和同一个子网中,通常可以与其他人通信。仍然可以从其他子网(我可以通过 ssh 进入)和不同的对等虚拟网络访问受影响的节点。这台机器也有(非常不稳定的)互联网连接,但大多数请求只是超时。
我们观察到,在受影响的节点上,报告的“使用的套接字”数量/proc/net/sockstat非常高(大约 4.5k 而不是健康节点上的大约 300)。监控显示,这个数字从节点变得不可用的那一刻起迅速上升。
有趣的是,我们似乎无法识别这些使用过的套接字的来源:
# cat /proc/net/sockstat
sockets: used 4566
TCP: inuse 2 orphan 0 tw 2 alloc 98 mem 4
UDP: inuse 1 mem 0
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0
# cat /proc/net/sockstat6
TCP6: inuse 98
UDP6: inuse 1
UDPLITE6: inuse 0
RAW6: inuse 1
FRAG6: inuse …Run Code Online (Sandbox Code Playgroud) tcpdump linux-networking linux-kernel coreos azure-networking
我正在尝试提高服务器的性能。我有几个需要低抖动(小于 10 毫秒的方差)的进程。
我在 i7-920(4 个物理核心,8 个 HT)上的平均负载最大为 4。大约有 10 个进程,范围从 40% 到 90% 的核心用户模式。系统使用率为 3%。总 CPU 使用率最高为 80%。
如果已经设置了无滴答和高分辨率计时器,将内核从 100hz 设置为 1000hz 会改善抖动吗?
这个页面似乎表明它仍然在做一些事情。https://lkml.org/lkml/2009/4/28/401
从自愿 (PREEMPT_VOLUNTARY) 更改为可抢占 (PREEMPT) 怎么样?
我正在编写一个实用程序来检查 /proc/net/tcp 和 tcp6 的活动连接,因为它比解析 netstat 输出更快。
因为我实际上没有启用 ipv6,所以我主要使用 localhost 作为我的参考点。这是我的 /proc/net/tcp6 的副本
sl local_address remote_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000000000000000000000000000:006F 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 19587 1 ffff880262630000 100 0 0 10 -1
1: 00000000000000000000000000000000:0050 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 22011 1 ffff880261c887c0 100 0 0 10 -1
2: 00000000000000000000000000000000:0016 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 21958 1 ffff880261c88000 100 0 0 10 -1
3: 00000000000000000000000001000000:0277 00000000000000000000000000000000:0000 0A …Run Code Online (Sandbox Code Playgroud) Ubuntu 的软件更新经常需要重新启动(这可能会产生副作用,例如停机时间)。
我看到 Ubuntu 有https://www.ubuntu.com/livepatch,它允许在不重启的情况下进行内核更新,但是,这是一项付费服务。还有ksplice。
是否存在升级/补丁不需要重启的 Linux 发行版/进程?
(我知道设置高可用性 (HA) 服务器并拥有一次性服务器是最佳实践 - 所以我不是在要求保持服务,而是在实际服务器上。)
当虚拟机 Linux 主机服务器不面向 Internet 并且仅在 LAN 上使用并且使用经过相对良好测试的发行版(如 Proxmox)时,通过内核 arg 关闭所有漏洞缓解措施会有多危险mitigations=off?
此外,是否有人测试过关闭所有此类缓解措施可能会带来哪些性能提升?
最近,当我看到缓解措施造成的巨大打击时,这对我来说成为一个问题retbleed: https: //www.phoronix.com/review/retbleed-benchmark
这种思路延伸到了对通过上述内核参数或单独关闭高影响缓解措施来删除所有或部分缓解措施可能产生的后果(无论是坏的还是积极的)的好奇心。
我有一个很好的整形器,带有散列过滤,构建在 linux 桥上。简而言之,br0连接external和internal物理接口,VLAN 标记的数据包是“透明地”桥接的(我的意思是,那里没有 VLAN 接口)。
现在,不同的内核以不同的方式执行此操作。我可能对确切的内核版本范围有误,请原谅。谢谢。
因此,在 debian 中,2.6.26 及更高版本(我相信最高为 2.6.32)---这有效:
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 flowid 1:200
Run Code Online (Sandbox Code Playgroud)
在这里,“内核”将“协议”字段中的两个字节与 0x8100 匹配,但将 ip 数据包的开头视为“零位置”(对不起,我的英语,如果我有点不清楚)。
同样,在 debian(我还没有构建 vanilla 内核)中,2.6.32-5 --- 这有效:
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 at 20 flowid 1:200
Run Code Online (Sandbox Code Playgroud)
在这里,“内核”与协议匹配,但计算从该协议头开始的偏移量——我必须添加 4 个字节到偏移量(20,而不是 16 用于 …
我们的 Linux 内核是 2.6.31,运行在带有 busybox 的嵌入式 MIPS 处理器上。
初始化脚本 (rcS) 启动 mdev:
echo "/sbin/stbhotplug" > /proc/sys/kernel/hotplug
mdev -s
Run Code Online (Sandbox Code Playgroud)
谁能告诉我 Linux 实用程序 mdev 是做什么的?
它看起来像是自动热插拔,因为 stbhotplug 是一个处理以太网接口的脚本。
此外,我们已经给予了根文件系统只有一个控制台设备即/dev/console是唯一的文件/dev。
但是,当系统运行时,/dev目录中充满了设备文件(例如/dev/mtd,等)。
我问的原因是偶尔我们会收到一个错误,即报告/dev/ubi_ctrl未找到或未/dev/ubi1找到。
Linux 如何或何时创建这些设备?
谢谢。