当前的 Linux 内核(例如 2.6.36)使用延迟确认 (delack)。
定义 TCP_DELACK_MIN ((无符号)(HZ/25))
因此,对于使用 HZ 值为 1000 的内核,ACK 应至少延迟 40 毫秒。
然而,RFC 2581 说 TCP 实现应该确认每一个完整大小的段,而不会进一步延迟。
有没有人知道 Linux 内核是否遵循“应该”,或者 TCP_DELACK_MIN 值是否意味着即使在接收到完整大小的段之后,ACK 也会继续延迟直到 40 毫秒过去?
我正在 Linux 服务器(内核 2.6.37、16 核、32G RAM)上的 2 个文件系统之间复制大文件(3 x 30G),但性能很差。我怀疑缓冲区缓存的使用正在扼杀 I/O 性能。
为了尝试缩小问题的范围,我直接在 SAS 磁盘上使用 fio 来监控性能。
这是 2 次 fio 运行的输出(第一次直接=1,第二次直接=0):
配置:
[test]
rw=write
blocksize=32k
size=20G
filename=/dev/sda
# direct=1
Run Code Online (Sandbox Code Playgroud)
运行 1:
test: (g=0): rw=write, bs=32K-32K/32K-32K, ioengine=sync, iodepth=1
Starting 1 process
Jobs: 1 (f=1): [W] [100.0% done] [0K/205M /s] [0/6K iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=4667
write: io=20,480MB, bw=199MB/s, iops=6,381, runt=102698msec
clat (usec): min=104, max=13,388, avg=152.06, stdev=72.43
bw (KB/s) : min=192448, max=213824, per=100.01%, avg=204232.82, stdev=4084.67
cpu : …Run Code Online (Sandbox Code Playgroud) 我已经完成了从源代码编译内核,
但是如何用调试符号编译它,我需要采取哪些额外的步骤?
我有一个闲置的 Linux centOS 系统,但 kswapd 使用的是 100% cpu。
我所运行的只是一个 bash 会话,最高运行......我有 32G RAM,但 kswapd 一直使用 100% cpu 超过 4 小时。
我想我已经从当前尚未实现的 Linux 内核中找到了我需要的东西。
我需要一种方法来设置每个进程的最大线程限制。
这可能吗?
我有一个 Debian 挤压内核 (linux-image-2.6.32-5-openvz-amd64),根据 Doku 应该支持 cgroups。当我查看内核配置时,确实如此(或者是否需要其他一些内核配置?)
# zgrep -i cgroup /boot/config-2.6.32-5-openvz-amd64
# CONFIG_CGROUP_SCHED is not set
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_DEVICE=y
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
CONFIG_NET_CLS_CGROUP=y
Run Code Online (Sandbox Code Playgroud)
此外,根据http://wiki.debian.org/LXC,内核参数 cgroup_enable=memory 可能是必要的。我用它启动内核:
# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-2.6.32-5-openvz-amd64 root=UUID=6332fe39-7eaa-4519-b6c1-e05808284586 ro cgroup_enable=memory quiet console=ttyS0,57600n8
Run Code Online (Sandbox Code Playgroud)
但是,系统仍然没有cgroup支持!无法挂载 cgroup 文件系统,因为系统甚至不知道文件系统类型:
# mount -t cgroup none /cgroup
mount: unknown filesystem type 'cgroup'
Run Code Online (Sandbox Code Playgroud)
和:
# grep -i cgroup /proc/filesystems
#
Run Code Online (Sandbox Code Playgroud)
所以要么有错误,要么我错过了一些东西。谁能告诉我什么?是否缺少内核参数?内核配置?
我最近转变了一些Java应用程序与Linux的手动配置的大页面上运行,如所描述这里。我指出“手动配置”是因为它们不是 透明的大页面,这给我们带来了一些性能问题。
所以现在,我在一个系统上运行了大约 10 个 tomcat,我很想知道每个 tomcat 使用了多少内存。
我可以/proc/meminfo按照Linux Huge Pages Usage Accounting 中的描述获取摘要信息。
但是我找不到任何工具来告诉我每个进程的实际大页面使用情况。
我/proc/pid/numa_stat探查了一下,发现了一些有趣的信息,这些信息使我如此粗暴:
function pshugepage () {
HUGEPAGECOUNT=0
for num in `grep 'anon_hugepage.*dirty=' /proc/$@/numa_maps | awk '{print $6}' | sed 's/dirty=//'` ; do
HUGEPAGECOUNT=$((HUGEPAGECOUNT+num))
done
echo process $@ using $HUGEPAGECOUNT huge pages
}
Run Code Online (Sandbox Code Playgroud)
或者这个,在perl中:
sub counthugepages {
my $pid=$_[0];
open (NUMAMAPS, "/proc/$pid/numa_maps") || die "can't open numa_maps";
my $HUGEPAGECOUNT=0;
while (my $line=<NUMAMAPS>) {
next unless ($line …Run Code Online (Sandbox Code Playgroud) 在半定期的基础上,我看到 GCE 实例冻结并显示以下错误消息(来自串行控制台):
g[1375589.784755] BUG: unable to handle kernel NULL pointer dereference at 0000000000000078
g[1375589.786206] IP: [<ffffffff810a67d9>] check_preempt_wakeup+0xd9/0x1d0
g[1375589.787341] PGD 5da04067 PUD db83067 PMD 0
g[1375589.788607] Oops: 0000 [#1] SMP
g[1375589.788705] Modules linked in: veth xt_addrtype xt_conntrack iptable_filter ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 ip_tables x_tables nf_nat nf_conntrack bridge stp llc aufs(C) softdog crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel aesni_intel aes_x86_64 processor psmouse parport_pc parport i2c_piix4 i2c_core thermal_sys lrw virtio_net evdev pcspkr serio_raw gf128mul glue_helper ablk_helper cryptd button ext4 crc16 mbcache jbd2 sd_mod …Run Code Online (Sandbox Code Playgroud) linux kernel-panic linux-kernel docker google-compute-engine
有没有办法禁用文件系统的 mtime?
有一个文件系统独立的 noatime 选项,但没有“nomtime”。同样在 ext4 和/或 btrfs 的文件系统特定文档中,我找不到这个。
这存在吗?
我们有几台运行 CentOS 内核 2.6.32-358.2.1 的 HP ProLiant BL460c Gen8、BIOS I31 06/01/2015 服务器,并且观察到内核日志时间戳突然激增。这是来自/var/log/messages:
May 19 05:31:58 NWBLWICZVIS-A-VZ-GVS2-01 kernel: [ 0.001000] Detected 2600.024 MHz processor.
May 19 05:31:58 NWBLWICZVIS-A-VZ-GVS2-01 kernel: [18014398.554743] Mount-cache hash table entries: 256
Run Code Online (Sandbox Code Playgroud)
价值从接近零到 208 天!这已在至少 10 个系统上看到。奇怪的是,时间戳的秒部分总是 18014398。系统死机,必须硬重置。正常运行时,时间戳没有跳转。
linux-kernel ×10
linux ×7
btrfs ×1
cache ×1
cgroup ×1
docker ×1
ext4 ×1
filesystems ×1
java ×1
kernel-panic ×1
lxc ×1
swap ×1
tcp ×1
threads ×1