标签: linux-kernel

tcp_delack_min 的含义

当前的 Linux 内核(例如 2.6.36)使用延迟确认 (delack)。

在/include/net/tcp.h它说:

定义 TCP_DELACK_MIN ((无符号)(HZ/25))

因此,对于使用 HZ 值为 1000 的内核,ACK 应至少延迟 40 毫秒。

然而,RFC 2581 说 TCP 实现应该确认每一个完整大小的段,而不会进一步延迟。

有没有人知道 Linux 内核是否遵循“应该”,或者 TCP_DELACK_MIN 值是否意味着即使在接收到完整大小的段之后,ACK 也会继续延迟直到 40 毫秒过去?

linux tcp linux-kernel

5
推荐指数
1
解决办法
1350
查看次数

Linux 缓冲区缓存对 IO 写入的影响?

我正在 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 cache linux-kernel

5
推荐指数
1
解决办法
2831
查看次数

如何使用调试符号编译内核?

我已经完成了从源代码编译内核,

但是如何用调试符号编译它,我需​​要采取哪些额外的步骤?

system-building linux-kernel

5
推荐指数
1
解决办法
3万
查看次数

为什么 kswapd 在空闲系统上使用高 CPU?

我有一个闲置的 Linux centOS 系统,但 kswapd 使用的是 100% cpu。

我所运行的只是一个 bash 会话,最高运行......我有 32G RAM,但 kswapd 一直使用 100% cpu 超过 4 小时。

virtualization linux swap linux-kernel

5
推荐指数
1
解决办法
2万
查看次数

限制linux内核中进程使用的最大线程数

我想我已经从当前尚未实现的 Linux 内核中找到了我需要的东西。

我需要一种方法来设置每个进程的最大线程限制。

这可能吗?

linux threads linux-kernel

5
推荐指数
1
解决办法
1万
查看次数

在 Linux 中激活 cgroup 需要什么

我有一个 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)

所以要么有错误,要么我错过了一些东西。谁能告诉我什么?是否缺少内核参数?内核配置?

linux-kernel lxc cgroup

5
推荐指数
1
解决办法
2万
查看次数

Linux(非透明)每进程大页记帐

我最近转变了一些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)

linux java linux-kernel

5
推荐指数
1
解决办法
4549
查看次数

'BUG:无法处理 Google Compute Engine 上的内核空指针取消引用'

在半定期的基础上,我看到 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

5
推荐指数
1
解决办法
2084
查看次数

Linux 无修改时间(nomtime)

有没有办法禁用文件系统的 mtime?

有一个文件系统独立的 noatime 选项,但没有“nomtime”。同样在 ext4 和/或 btrfs 的文件系统特定文档中,我找不到这个。

这存在吗?

linux filesystems ext4 linux-kernel btrfs

5
推荐指数
1
解决办法
1176
查看次数

为什么内核时间戳突然跳转?

我们有几台运行 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

5
推荐指数
1
解决办法
281
查看次数