进程资源限制

本文参考《深入理解Linux内核》
每个进程都有一组相关的资源限制(resource limit),限制指定了进程能使用的系统资源数量。这些限制避免用户过分使用系统资源(cpu,磁盘空间等)
对当前进程的资源限制存放在 current->signal->rlim字段。
linux系统承认以下表中的资源限制:

RLIMIT_AS 进程地址空间最大数(以字节为单位)
RLIMIT_CORE 内存信息转储文件大小
RLIMIT_CPU 进程使用CPU的最长时间(秒为单位)
RLIMIT_DATA 堆大小最大值
RLIMIT_FSIZE 文件大小的最大值
RLIMIT_LOCKS 文件锁数量最大值
RLIMIT_MEMLOCK
RLIMIT_MSGQUEUE
RLIMIT_NOFILE 打开文件描述符的最大值
RLIMIT_NPROC 用户能拥有的进程最大数
RLIMIT_RSS
RLIMIT_SIGENDING
RLIMIT_STACK 栈大小的最大值

如果你不会使用c语言,也没有关系,你可以使用python模块来查看这些数据,pyhon resource模块提供了相应的接口
https://docs.python.org/3/library/resource.html

import resource
print(resource.getrlimit(resource.RLIMIT_STACK))
---
(8388608, -1)

比如说我可以去修改一个进程可以打开的文件描述符的数量,当我打开超过这个数量的文件描述符的时候,就会报错误。
OSError: [Errno 24] Too many open files:

如何查看一个进程打开了多少文件描述符?

import psutil
proc = psutil.Process()
proc.open_files()
posted @ 2022-03-06 10:37  叶常落  阅读(74)  评论(0编辑  收藏  举报