相关疑难解决方法(0)

为什么swappiness默认设置为60?

我刚刚在 Linux 上阅读了一些关于 swappiness 的东西。我不明白为什么默认设置为 60。

根据我的说法,这个参数应该设置为 10 以减少交换。交换在我的硬盘上,所以它比我的记忆慢得多。

他们为什么要这样配置内核?

linux kernel swap

120
推荐指数
3
解决办法
7万
查看次数

如何跨发行版可移植地获取可用内存量?

报告内存的标准文件/工具在不同的 Linux 发行版上似乎具有不同的格式。例如,在 Arch 和 Ubuntu 上。

  • $ free
                  total        used        free      shared  buff/cache   available
    Mem:        8169312     3870392     2648348       97884     1650572     4110336
    Swap:      16777212      389588    16387624
    
    
    $ head /proc/meminfo 
    MemTotal:        8169312 kB
    MemFree:         2625668 kB
    MemAvailable:    4088520 kB
    Buffers:          239688 kB
    Cached:          1224520 kB
    SwapCached:        17452 kB
    Active:          4074548 kB
    Inactive:        1035716 kB
    Active(anon):    3247948 kB
    Inactive(anon):   497684 kB
    
    Run Code Online (Sandbox Code Playgroud)
  • Ubuntu

    $ free
                 total       used       free     shared    buffers     cached
    Mem:      80642828   69076080   11566748    3063796     150688   58358264
    -/+ buffers/cache:   10567128   70075700 …
    Run Code Online (Sandbox Code Playgroud)

linux memory meminfo

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

我应该尝试“平衡”我的线程还是 linux 这样做?

一个简单的例子。我正在运行一个使用 TCP 套接字处理 http 请求的进程。它可能 A) 计算一些意味着 CPU 将成为瓶颈的东西 B) 发送一个可能导致网络成为瓶颈的大文件或 C) 具有半随机访问的复杂数据库查询导致磁盘瓶颈

我是否应该尝试将每个页面/API 调用归类为上述类型中的一种或多种,​​并尝试平衡每种调用的数量?或者操作系统会为我这样做吗?我如何决定我想要多少线程?

我将为硬件线程 12 和 48 使用 2 个数字(英特尔至强有那么多)。我想有 2/3 的线程用于重型 CPU(8/32),1 个线程用于重型磁盘(或每个磁盘 1 个重型线程),其余 3/15 用于其他任何事情,这意味着不要尝试平衡网络。

我是否应该在仅支持 12/48 线程的硬件上拥有超过 12/48 的线程?我想要更少,所以我不会导致 CPU 进入较慢的节流模式(我忘记了它的名字,但我听说如果一次激活太多芯片会发生这种情况)。如果我必须加载和资源平衡我的线程,我会怎么做?

linux scheduling kernel thread linux-kernel

9
推荐指数
1
解决办法
318
查看次数

为什么即使 vm.swappiness = 1 RHEL 也使用交换?

RHEL 7.2 内存使用,每个free -m

              total        used        free      shared  buff/cache   available
Mem:         386564       77941       57186         687      251435      306557
Swap:         13383        2936       16381
Run Code Online (Sandbox Code Playgroud)

我们看到使用的swap是2936M

所以我们想通过以下方式将其减少到 min

echo 1 > /proc/sys/vm/swappiness

sysctl -w vm.swappiness=1

echo "vm.swappiness = 1" >> /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)

10 分钟后我们再次检查,但操作系统仍然使用交换

free -m

              total        used        free      shared  buff/cache   available
Mem:         386564       77941       57186         687      251435      306557
Swap:         13389        2930       16381
Run Code Online (Sandbox Code Playgroud)

为什么我们没有采取的行动会立即产生影响?

我们是否需要重新启动操作系统,以便让交换曾经是 0 ?

例子

我们运行vmstat

 vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free …
Run Code Online (Sandbox Code Playgroud)

rhel kernel memory swap

4
推荐指数
2
解决办法
4046
查看次数

标签 统计

kernel ×3

linux ×3

memory ×2

swap ×2

linux-kernel ×1

meminfo ×1

rhel ×1

scheduling ×1

thread ×1