linux 在centos7 VM中设置cgroup,并在该cgroup中选择4个cpu,在该cgroup中执行压力任务,但只有一个工作

xmq68pz9  于 2022-12-29  发布在  Linux
关注(0)|答案(1)|浏览(145)

我使用stress工具并在RT-centos7 VM中设置了一个cgroup。我尝试使用所有选定的CPU使stress在cgroup中工作,但只有一个CPU工作,这让我感到困惑。stress脚本如下:

#!/bin/bash

stress --cpu 3 --io 3 --vm 1

执行代码为:

nohup /home/wxh/scripts/stress_test.sh &

我使用的cgroup命令是:其他配置均为默认值。

echo 2-5 > cpuset.cpus
echo 0 >cpuset.mems
echo 2216 >> tasks
echo 2217 >> tasks
echo 2218 >> tasks
echo 2219 >> tasks
echo 2220 >> tasks
echo 2221 >> tasks
echo 2222 >> tasks

2116 ~ 2222是与压力进程相关的pid,VM内核为:4.19.265-第117条,厘头7
htop命令显示只有2号CPU(CPU ID为3)满负荷工作,其他3个CPU完全不工作。
enter image description here
虚拟机配置xml如下所示:

<domain type='kvm'>
    <name>centos7</name>
    <memory unit='GiB'>16</memory>
    <vcpu>6</vcpu>
    <os>
    <type arch='aarch64' machine='virt'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
    <nvram>/var/lib/libvirt/qemu/nvram/centos7_VARS.fd</nvram>
    </os>
    <features>
    <acpi/>
    <gic version='3'/>
    </features>
    <cpu mode='host-passthrough'>
        <topology sockets='2' cores='3' threads='1'/>
    </cpu>
    <iothreads>1</iothreads>
    <clock offset='utc'/>
    <on_poweroff>destroy</on_poweroff>
    <on_reboot>restart</on_reboot>
    <on_crash>restart</on_crash>
    <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
        <driver name='qemu' type='qcow2' iothread="1"/>
        <source file='/home/xxx/v1_2th.qcow2'/>
        <target dev='vda' bus='virtio'/>
        <boot order='1'/>
    </disk>
    <disk type='file' device='cdrom'>
        <driver name='qemu' type='raw'/>
        <source file='/home/xxx/softwares/Minimal_2th.iso'/>
        <readonly/>
        <target dev='sdb' bus='scsi'/>
        <boot order='2'/>
    </disk>
    <interface type='network'>
        <source network='default'/>
    </interface>
    <console type='pty'/>
        <video>
           <model type='virtio'/>
        </video>
        <controller type='scsi' index='0' model='virtio-scsi'/>
    </devices>
    <seclabel type='dynamic' model='dac' relabel='yes'/>
    <vcpu placement='static' cpuset='64,65,66,67,68,69,70,71'>6</vcpu>
    <cputune>
        <vcpupin vcpu='0' cpuset='64'/>
        <vcpupin vcpu='1' cpuset='65'/>
        <vcpupin vcpu='2' cpuset='66'/>
        <vcpupin vcpu='3' cpuset='67'/>
        <vcpupin vcpu='4' cpuset='68'/>
        <vcpupin vcpu='5' cpuset='69'/>
        <emulatorpin cpuset='70'/>
        <iothreadpin iothread='1' cpuset='71'/>
    </cputune>
</domain>

我已经检查了cpuset.effective_cpus和cpuset.cpu_exclusive,但是我认为问题不在这里。我的目标是使压力过程在所有4个cpus上工作。谢谢。

3bygqnnd

3bygqnnd1#

我知道我的问题是什么,问题是你不能同时使用isolcpus=2-5命令和cgroup,我的决定是撤销isolcpus命令。

相关问题