首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么iotop会显示“?呃”

为什么iotop会显示“?呃”
EN

Unix & Linux用户
提问于 2022-04-17 11:44:38
回答 1查看 248关注 0票数 1

当我运行iotop时,第二列"PRIO“显示?err无处不在。

这是什么意思?我在手册中没有发现任何提到错误的地方。

我正在使用自定义编译内核。我的内核中可能缺少一些选项吗?我怎么才能找到哪一个?

编辑

我的内核中有所有必需的选项:

代码语言:javascript
复制
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
CONFIG_VM_EVENT_COUNTERS=y
EN

回答 1

Unix & Linux用户

发布于 2022-04-21 10:03:12

如何找到iotop所需的内核选项?在手册页中:

CONFIG_TASK_DELAY_ACCT和CONFIG_TASK_IO_ACCOUNTING选项需要在您的Linux内核构建配置中启用,这些选项依赖于CONFIG_TASKSTATS。

换句话说,作为menuconfig菜单(我的5.4)的一部分,在CPU/Task time和stats记帐子菜单下,您应该检查Export task/process statistics through netlink然后是Enable per-task delay accounting以及Enable per-task storage I/O accounting

也不会伤害检查CONFIG_VM_EVENT_COUNTERS (Enable VM event counters for /proc/vmstat in the General menu)为什么?哈哈,因为在iotop包…中有一个名为vmstat.c的文件所以…以防万一…

补充说,在一天结束时,如果缺少任何强制配置选项,iotop应该会在运行时抱怨。

我不知道在较新的内核中这是否仍然有效,但是,在我的5.4中,可能由于一些重要的开销,尽管CONFIG_TASK_DELAY_ACCT = y,每个任务延迟记帐不会自动激活。

为了实际启用每个任务的延迟记帐,还需要将delayacct添加到内核命令行。

现在,关于?err的显示:我怀疑ncurses ( GUI工具包iotop所依赖的)是部分原因,因为这个库通常以问号的形式显示当前语言设置中没有定义的字符。

因此,要么在区域设置中发现一些不匹配的地方,要么在…中得到一些不匹配。PRIO值在某种程度上是不可打印的。

顺便说一句,你会使用线程IRQ的IOW运行SCHED_RR吗?我可以承认,在任何线程实时调度的情况下,我很难计算出get_ioprio_from_sched函数的输出(在ioprio.c中)。(因为在本例中,尼斯值是没有意义的(即使ps也不尝试显示它),因此ioprio-不错,顺便说一句,返回值依赖于ioprio_nice。

代码语言:javascript
复制
inline int get_ioprio_from_sched(pid_t pid) {
    int scheduler=sched_getscheduler(pid);
    int nice=getpriority(PRIO_PROCESS,pid);
    int ioprio_nice=(nice+20)/5;

    if (scheduler==SCHED_FIFO||scheduler==SCHED_RR)
        return (IOPRIO_CLASS_RT<<IOPRIO_CLASS_SHIFT)+ioprio_nice;
    if (scheduler==SCHED_IDLE)
        return IOPRIO_CLASS_IDLE<<IOPRIO_CLASS_SHIFT;
    return (IOPRIO_CLASS_BE<<IOPRIO_CLASS_SHIFT)+ioprio_nice;
}
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/699354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档