Linux 系统高级进程管理与实时系统解析
1. I/O 优先级
Linux 除了调度优先级,还允许进程指定 I/O 优先级,该值会影响进程 I/O 请求的相对优先级。内核的 I/O 调度器会优先处理 I/O 优先级高的进程请求。
默认情况下,I/O 调度器使用进程的 nice 值来确定 I/O 优先级,设置 nice 值会自动改变 I/O 优先级。不过,Linux 内核还提供了两个系统调用用于独立设置和获取 I/O 优先级:
int ioprio_get (int which, int who)
int ioprio_set (int which, int who, int ioprio)
遗憾的是,glibc 未为这些系统调用提供用户空间接口,使用起来较为繁琐。在有支持之前,可通过 nice 值或 ionice 实用工具(属于 util - linux 包)来操作进程的 I/O 优先级。
并非所有 I/O 调度器都支持 I/O 优先级,例如完全公平排队(CFQ)I/O 调度器支持,而其他标准调度器目前不支持,若当前调度器不支持,I/O 优先级会被忽略。
2. 处理器亲和性
Linux 支持单系统中使用多个处理器,除启动过程外,支持多处理器的大部分工作由进程调度器承担。在多处理机上,调度器需决定每个 CPU 运行哪些进程,这带来两个挑战:
- 充分利用所有处理器,避免一个 CPU 空闲而进程等待运行。
- 尽量让进程在同一 CPU 上运行,因为进程在处理器间迁移有成本,主要是缓
超级会员免费看
订阅专栏 解锁全文
2894

被折叠的 条评论
为什么被折叠?



