1. 描述

getrlimit()setrlimit() 系统调用用于获取和设置资源限制。每种资源都有相关的软限制和硬限制,如 rlimit 结构体所定义:

软限制是内核为相应资源执行的值。硬限制则作为软限制的上限:非特权进程仅能将其软限制设置为从 0 到硬限制范围内的值,并且不可逆地降低其硬限制。特权进程(在 Linux 下:初始用户命名空间中具有 CAP_SYS_RESOURCE 权限的进程)可以任意修改限制值。

RLIM_INFINITY 表示不限制资源(在 getrlimit() 返回的结构体,以及传递给 setrlimit() 的结构体中)。

与 CPU 和内存相关的 resource 参数如下:


2. Rust 示例 1

2.1. Cargo.toml

2.2. src/main.rs

2.3. 通过 /proc 伪文件系统查看进程内存

通过 /proc/<PID>/status 查看进程使用的内存:

2.4. 通过 ps 命令查看进程内存

其中:

2.5. 通过 top 命令查看进程内存

其中:


3. CPU 亲和性

CPU 亲和性(CPU affinity)是指将特定的进程或线程限制在特定的 CPU 核心上运行的能力。通过设置 CPU 亲和性,可以控制进程或线程在多核系统中的调度和执行方式,以优化性能和资源利用。通过设置 CPU 亲和性,可以优化多核系统的性能,减少线程迁移和缓存失效的开销,并且提供更好的局部性和并行性。


4. Rust 示例 2

4.1. Cargo.toml

4.2. src/main.rs