小编Mik*_*kov的帖子

vm.overcommit_memory 如何工作?

当我使用默认设置时:

vm.overcommit_memory = 0
vm.overcommit_ratio = 50
Run Code Online (Sandbox Code Playgroud)

我可以从/proc/meminfo文件中读取这些值:

CommitLimit:     2609604 kB
Committed_AS:    1579976 kB
Run Code Online (Sandbox Code Playgroud)

但是,当我vm.overcommit_memory从更改0为 时2,我无法启动更改前可以启动的同一组应用程序,尤其是 amarok。我不得不更改vm.overcommit_ratio300,因此可以增加限制。现在,当我启动 amarok 时,/proc/meminfo显示以下内容:

CommitLimit:     5171884 kB
Committed_AS:    3929668 kB
Run Code Online (Sandbox Code Playgroud)

这台机器只有 1GiB 的内存,但是 amarokvm.overcommit_memory设置为 0时没有问题。但是在设置为 的情况下2,amarok 需要分配超过 2GiB 的内存。这是正常行为吗?如果是这样,谁能解释为什么,例如,firefox(比 amarok 消耗的内存多 4-6 倍)在更改前后以相同的方式工作?

memory kernel sysctl

61
推荐指数
2
解决办法
11万
查看次数

关于 kernel.random.* 参数的一些问题

我正在尝试了解 下的 linux 内核参数/proc/sys/kernel/random/,但我遇到了一些麻烦。你能帮我弄清楚一些事情吗?

  1. 什么是boot_id使用的参数?我只找到了它在启动时生成的信息,但我找不到原因。
  2. 我知道熵池大小是恒定的(4096 位)并且不能改变。为什么这个数字这么小?难道不能是 1048576 或更多吗?也许有很多可用的熵不是很好吗?
  3. 它类似于第二个问题,但涉及entropy_avail参数——不填充整个熵池的目的是什么?当我检查参数时,它在 1000 位左右振荡,但池大小为 4096。当entropy_avail达到 中设置的阈值时write_wakeup_threshold,它会下降一点(通常为 100),然后再次上升到write_wakeup_threshold参数中指定的点。那么为什么我们在熵池大小中需要这个 4096 呢?
  4. 我有什么理由应该增加或减少read_wakeup_thresholdwrite_wakeup_threshold参数的值?第一个只是让需要/dev/random设备熵的进程休眠,但是当我将它设置为 64、128 或 256 时有什么区别?它只是挂了更长的时间,或者还有别的什么吗?

kernel entropy-pool

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

标签 统计

kernel ×2

entropy-pool ×1

memory ×1

sysctl ×1