AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 765692
Accepted
arielf
arielf
Asked: 2016-05-01 18:03:31 +0800 CST2016-05-01 18:03:31 +0800 CST 2016-05-01 18:03:31 +0800 CST

调度程序:如何调整 cfq 以支持交互式进程

  • 772

问题:调度程序似乎不支持交互式进程:

在具有从一个 ( btrfs) 磁盘到另一个 ( ) 磁盘的自动 cron 计划备份的桌面系统上ext4。备份进程挂载空闲磁盘 ( /dev/sda<X>),备份到它,最后卸载它。

每次备份过程启动时,系统都会变得不可用。调度程序似乎未能完成其支持交互式进程而不是批处理进程的最基本工作。在备份进程运行时,有很多 IO 正在进行,其他一切都冻结了。键盘和鼠标指针停止响应。在任何终端/外壳中按下按键时的回声会延迟几秒钟。

备份完成后,交互式响应将恢复正常。

有关设置和配置的更多详细信息:

备份过程使用rsnapshot(调用rsyncand cp -al)并以较低的优先级运行(备份作业前面是nice),如下所示:

nice /usr/bin/rsnapshot -VD -c /etc/my-rsnapshot.conf daily

在下运行备份nice似乎没有帮助。在备份期间,所有交互进程似乎都被rsyncandcp进程的繁重 CPU 和 IO 饿死了。

这是一个 IA-64,iCore-7 系统,应该能够并行运行 8 个进程。内存为 16GB,其中一些是免费的。修剪后的mount输出(当安装了额外的磁盘时)是:

/dev/sdb2 on / type btrfs (rw,relatime,subvol=@,thread_pool=4)
/dev/sdb3 on /home type btrfs (rw,relatime,subvol=@home,thread_pool=4)

/dev/sda2 on /media/idisk/root ext4 (rw,relatime)
/dev/sda3 on /media/idisk/home ext4 (rw,relatime)

none on /sys/fs/cgroup type tmpfs (rw)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,relatime,cpuset,release_agent=/run/cgmanager/agents/cgm-release-agent.cpuset,clone_children)
cgroup on /sys/fs/cgroup/cpu type cgroup (rw,relatime,cpu,release_agent=/run/cgmanager/agents/cgm-release-agent.cpu)
cgroup on /sys/fs/cgroup/cpuacct type cgroup (rw,relatime,cpuacct,release_agent=/run/cgmanager/agents/cgm-release-agent.cpuacct)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,relatime,memory,release_agent=/run/cgmanager/agents/cgm-release-agent.memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,relatime,devices,release_agent=/run/cgmanager/agents/cgm-release-agent.devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,relatime,freezer,release_agent=/run/cgmanager/agents/cgm-release-agent.freezer)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,relatime,blkio,release_agent=/run/cgmanager/agents/cgm-release-agent.blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,relatime,perf_event,release_agent=/run/cgmanager/agents/cgm-release-agent.perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,relatime,hugetlb,release_agent=/run/cgmanager/agents/cgm-release-agent.hugetlb)

这是在最新的 14.04 LTS 系统上。默认情况下,调度程序设置为完全公平队列(cfq):

# cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
# cat /sys/block/sdb/queue/scheduler
noop deadline [cfq]

我能够找到一个相关的问题。调度程序使建议使用的进程饿死nice,但我已经在这样做了。

与相关信息的另一个相关问题是:如何更改noop调度程序

备份运行时,如何使键盘、鼠标和交互式 shell 响应更快?

提前致谢。

kernel
  • 1 1 个回答
  • 1055 Views

1 个回答

  • Voted
  1. Best Answer
    arielf
    2016-05-12T10:33:53+08:002016-05-12T10:33:53+08:00

    只是一个部分答案,自从询问哪个解决了我的问题后,做了更多的研究和实验,看到没有回应

    截至 2016 年初,Linux 内核调度程序中存在已知问题/错误。

    简短的总结是,在不同的情况下,即使进程队列中有可运行的进程,核心仍保持空闲状态。

    参考:

    • Linux 调度器,十年的核心浪费
    • github 存储库,带有对调度的实验性修复

    从 btrfs 切换到 ext4 可以缓解这些问题:

    我个人从 btrfs 切换回 ext4。I/O 性能显着提高。

    切换到 SSD 可以进一步降低 IO 性能

    SSD 的价格和可靠性大幅下降。2TB 的三星 SSD (EVO 850) 现在售价略高于 600 美元。现在,将系统(根和主目录)切换到 SSD 使得密集的备份活动完全不被注意到(系统 SSD 在对同一系统上的常规 ext4 格式磁盘进行大量写入时非常灵活)。

    最后:对于 SSD,内核中复杂调度程序的好处似乎变得值得怀疑。我将默认设置更改为 noop,但性能没有明显下降。事实上,使用 noop 调度程序,我看到系统负载减少、CPU 扩展数量减少和硬件温度降低。

    $ cat /sys/block/sda/queue/scheduler
    [noop] deadline cfq
    
    $ cat /proc/cpuinfo | grep  Hz
    model name      : Intel(R) Core(TM) i7-4771 CPU @ 3.50GHz
    cpu MHz         : 836.308
    model name      : Intel(R) Core(TM) i7-4771 CPU @ 3.50GHz
    cpu MHz         : 990.253
    ... similar low actual frequency scaling for all cores ...
    

    2021 年 12 月更新

    Michael Larabel @ Phoronix运行了一些基准测试来确认底线:

    虽然一些 Linux 发行版仍然默认使用 MQ-Deadline 或 Kyber 作为 NVMe SSD 存储,但不使用 I/O 调度程序仍然倾向于在整体上执行最佳...

    • 20.04 注意:noop调度程序在 Linux 内核 5.x 中已更改名称。现在调用它,none因此如果您的系统没有旋转磁盘并且您想切换到noop调度程序,您可以使用它(必须在 root shell 中运行,并且必须确保您拥有正确的设备):
    # NOTE: 'sda' in the path below is just an example
    # Your SSD may be on a different device
    echo none > /sys/block/sda/queue/scheduler
    
    • 0

相关问题

  • 为 i7 处理器编译内核的最佳方法是什么?

  • 未连接到任何可见进程的令人讨厌的 CPU 峰值

  • 如何让我的电脑中的风扇在暂停时关闭?[关闭]

  • Ubuntu 是否支持与 SSD 一起使用的 TRIM 命令?

  • 使用 apt-get upgrade 时如何强制安装内核更新?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve