---
title: 限制进程的CPU使用率或内存使用量
description: "如果用户想限制物理机中Ascend DMI工具运行时CPU占用率或内存使用量，可参考本章节进行操作。"
url: https://www.hiascend.com/document/detail/zh/mindcluster/latest/toolbox/toolboxug/toolboxug_0096.html
sourcePath: /source/zh/mindcluster/2610/toolbox/toolboxug/toolboxug_0096.html
indexId: 20da7d70aa658498bd37a57e41ff0b379c01b5d206399c8565f2fb36a3664d8565
---
# 限制进程的CPU使用率或内存使用量

如果用户想限制物理机中Ascend DMI工具运行时CPU占用率或内存使用量，可参考本章节进行操作。

cgroups全称control groups，是Linux内核提供的一种可以限制单个或多个进程所使用资源的机制，可以对CPU、内存等资源实现精细化的控制。通过限制Ascend DMI工具运行时占用的CPU占用率和内存使用量，可防止Ascend DMI工具占用资源过多导致其他程序无法正常运行。具体操作参考如下：

- 限制CPU占用率。

  1. 创建子目录。

```
cd /sys/fs/cgroup/cpu
mkdir ascend-dmi         # 目录名可自定义
```


    创建完ascend-dmi目录后，会自动在该目录下生成cpu.cfs_period_us、cpu.cfs_quota_us等文件。

  2. 进入ascend-dmi目录，设置相应文件中的值。对于CPU的限制主要涉及以下文件。
**表1 文件说明**

| 文件名 | 说明 |
| --- | --- |
| cpu.cfs\_period\_us | 配置CPU时间周期长度。单位是微秒（us），取值范围为1000~1000000，默认为100000。 |
| cpu.cfs\_quota\_us | 设置的周期内允许占用的CPU时间（指单核的时间，多核需要在设置时累加）。默认值为\-1，表示不受CPU时间的限制。 若要限制为30%，则修改值为30000。 若要限制最多使用CPU两个核，则修改值为200000。 |
| tasks | 需要限制的程序进程pid列表。对于限制生效后的pid派生的子进程，会自动将其子进程的pid也加入到该文件中。 建议将运行程序的shell的pid（执行命令echo $$）添加到tasks之后，再启动程序。 |


    以限制最大CPU使用率为50%为例，具体操作如下：

    cpu.cfs_period_us文件值保持默认，修改cpu.cfs_quota_us值为50000，在准备运行Ascend DMI工具的shell窗口执行echo $$查询其pid，并将其写入tasks文件中。

- 限制内存使用量。

  1. 创建子目录。

```
cd /sys/fs/cgroup/memory
mkdir ascend-dmi         # 目录名可自定义
```


    创建完ascend-dmi目录后，会自动在该目录下生成memory.limit_in_bytes、tasks等文件。

  2. 进入ascend-dmi目录，设置相应文件中的值。对于内存的限制主要涉及以下文件。
**表2 文件说明**

| 文件名 | 说明 |
| --- | --- |
| memory.limit\_in\_bytes | 限制进程的内存使用量。 例如限制最多使用500MB内存，值应为500\*1024\*1024=524288000。将memory.limit\_in\_bytes文件中的值修改为计算所得值524288000。 |
| tasks | 需要限制的程序进程pid列表。对于限制生效后的pid派生的子进程，会自动将其子进程的pid也加入到该文件中。 建议将运行程序的shell的pid（执行命令echo $$）添加到tasks之后，再启动程序。 |


    以限制最多使用500M内存为例，将memory.limit_in_bytes文件中的值修改为计算所得值524288000，在准备运行Ascend DMI工具的shell窗口执行echo $$查询其pid，并将其写入tasks文件中。
