资源使用信息 – Unix特定服务(Python教程)(参考资料)
resource
– 资源使用信息
本模块提供了测量和控制程序使用的系统资源的基本机制.
符号常量用于指定特定的系统资源,并请求有关当前进程或其子进程的使用信息.
一个OSError
因系统调用失败而引发的问题
- exception
resource.
error
- 一个弃用的别名
OSError
.改版3.3:以下PEP 3151 ,这个类是@的别名
OSError
.
资源限制
使用setrlimit()
下面描述的功能。每个资源由一对限制控制:软限制和硬限制。软限制是电流限制,可以随着时间的推移逐渐降低或提高。软限制永远不会超过硬限制。硬限制可以降低到大于软限制的任何值,但不会升高。(只有具有超级用户有效UID的进程才能提高硬限制。)
可以限制的特定资源取决于系统。它们在中描述getrlimit(2)手册页。当底层操作系统支持它们时,支持下面列出的资源;对于那些平台,在这个模块中没有定义操作系统无法检查或控制的资源.
resource.
RLIM_INFINITY
- 常量用于表示无限资源的限制.
resource.
getrlimit
(resource)- 返回一个元组
(soft, hard)
目前的软硬限制resource。提高ValueError
如果指定了无效资源,或error
如果底层系统调用意外失败.
resource.
setrlimit
(resource, limits)- 设置新的消耗限制resource。limits论点必须是
(soft, hard)
描述新限制的两个整数。值RLIM_INFINITY
可用于请求无限制的限制.增加
ValueError
如果指定了无效资源,如果新的softlimit超出硬限制,或者进程试图提高其硬限制。指定RLIM_INFINITY
当该资源的硬系统限制不是无限制时,将导致ValueError
。具有超级用户有效UID的进程可以请求任何有效限制值,包括无限制,但ValueError
如果要求的限制超过系统强制限制,将仍然会被提升。setrlimit
也可以举起error
如果底层系统调用失败.
resource.
prlimit
(pid, resource[, limits] )- 结合
setrlimit()
和getrlimit()
在一个函数中,支持获取和设置任意进程的资源限制。如果pid为0,则调用适用于当前进程。resource和limits与中的含义相同setrlimit()
,除了limits是可选的.当没有给出limits时,函数返回resource进程的pid限制。当limits给出resource进程限制设置,返回原资源限制.
提高
ProcessLookupError
什么时候 pid无法找到和PermissionError
当用户没有CAP_SYS_RESOURCE
为了这个过程可用性:使用glibc 2.13或更高版本的Linux 2.6.36或更高版本.
版本3.4.
这些符号定义了可以使用setrlimit()
和getrlimit()
功能如下所述。这些符号的值正是C程序使用的常数.
的Unix手册页getrlimit(2)列出可用资源。请注意,并非所有系统都使用相同的符号或相同的值来表示相同的资源。此模块不会尝试屏蔽平台差异 – 该平台上的此模块将无法获得未为平台定义的符号.
resource.
RLIMIT_CPU
- 进程可以使用的最大处理器时间(以秒为单位)。如果超过此限制,则
SIGXCPU
信号被发送到进程。(Seethesignal
有关如何捕获此信号并执行某些有用操作的信息的模块文档,例如将打开的文件刷新到磁盘。)
resource.
RLIMIT_FSIZE
- 进程可能创建的文件的最大大小.
resource.
RLIMIT_DATA
- 进程堆的最大大小(以字节为单位)
resource.
RLIMIT_STACK
- 当前进程的调用堆栈的最大大小(以字节为单位)。这只会影响多线程进程中主线程的堆栈.
resource.
RLIMIT_RSS
- 应该为进程提供的最大驻留集大小.
resource.
RLIMIT_NPROC
- 当前进程可能创建的最大进程数.
resource.
RLIMIT_NOFILE
- 当前进程的最大打开文件描述符数.
resource.
RLIMIT_OFILE
- 的BSD名称
RLIMIT_NOFILE
.
resource.
RLIMIT_MEMLOCK
- 可以锁定在内存中的最大地址空间.
resource.
RLIMIT_VMEM
- 进程占用的最大映射内存区域.
resource.
RLIMIT_AS
- 进程可能占用的地址空间的最大区域(以字节为单位).
resource.
RLIMIT_MSGQUEUE
- 可以为POSIX消息队列分配的字节数.
Availability:Linux 2.6.8或更高版本.
新版本3.4.
resource.
RLIMIT_NICE
- 该过程的上限很好(计算为20 – rlim_cur).
可用性:Linux 2.6.12或更高版本.
新版本3.4.
resource.
RLIMIT_RTPRIO
- 实时优先级的上限
可用性:Linux 2.6.12或更高版本.
新版本3.4.
resource.
RLIMIT_RTTIME
- 进程在不进行阻塞系统调度的情况下实时调度所花费的CPU时间的时间限制(以微秒为单位)
Availability:Linux 2.6.25或更高版本.
版本3.4中的新功能.
resource.
RLIMIT_SIGPENDING
- 进程可能排队的信号数量
可用性:Linux 2.6.8或更高版本.
新的版本3.4.
resource.
RLIMIT_SBSIZE
- 此用户的套接字缓冲区使用的最大大小(以字节为单位)。这限制了此用户随时可以容纳的网络内存量,从而限制了mbuf的数量.
可用性:FreeBSD 9或更高版本.
新版本3.4.
resource.
RLIMIT_SWAP
- 所有此用户标识进程可以保留或使用的交换空间的最大大小(以字节为单位)。仅当设置了vm.overcommit sysctl的第1位时才强制执行此限制。请参阅tuning(7)以获取这个sysctl的完整描述.
Availability:FreeBSD 9或更高版本.
3.4版本中的新版.
resource.
RLIMIT_NPTS
- 伪终端的最大数量由这个用户id.
Availability创建:FreeBSD 9或更高版本.
版本3.4.
资源使用情况
这些函数用于检索资源使用信息:
resource.
getrusage
(who)- 此函数返回一个对象,该对象描述当前进程或其子进程所消耗的资源,如指定的那样通过who参数。who参数应使用下面描述的
RUSAGE_*
常量之一来指定.返回值的字段各自描述了如何使用特定系统资源,例如,运行所花费的时间是用户模式或进程从主内存换出的时间。一些值取决于内部的时钟刻度,例如进程使用的内存量.
为了向后兼容,返回值也可以作为16元素的元组来访问.
字段
ru_utime
和ru_stime
返回值是浮点值,分别表示在用户模式中执行所花费的时间量和在系统模式下执行所花费的时间量。其余值是整数。有关这些值的详细信息,请参阅getrusage(2)手册页。这里给出一个简短的总结:索引 字段 资源 0
ru_utime
用户模式下的时间(浮动) 1
ru_stime
系统中的时间mode(float) 2
ru_maxrss
最大驻留大小 3
ru_ixrss
共享内存大小 4
ru_idrss
非共享内存大小 5
ru_isrss
非共享堆栈大小 6
ru_minflt
页面错误没有需要I / O 7
ru_majflt
page故障需要I / O 8
ru_nswap
交换次数 9
ru_inblock
阻止输入操作 10
ru_oublock
阻止输出操作 11
ru_msgsnd
发送的消息 12
ru_msgrcv
收到的消息 13
ru_nsignals
收到的信号 14
ru_nvcsw
自愿上下文切换 15
ru_nivcsw
非自愿的上下文切换 如果无效的话//这个函数会调出
ValueError
who参数指定。它也可能会提升error
特殊情况下的例外情况.
resource.
getpagesize
()- 返回系统页面中的字节数。(这不一定与硬件页面大小相同。)
以下RUSAGE_*
符号传递给getrusage()
用于指定应提供哪些进程信息的功能.
resource.
RUSAGE_SELF
- 传递给
getrusage()
请求调用进程消耗的资源,这是进程中所有线程使用的资源总和.
resource.
RUSAGE_CHILDREN
- 传递给
getrusage()
请求已终止并等待的调用进程的子进程所消耗的资源.
resource.
RUSAGE_BOTH
- 传递给
getrusage()
请求当前进程和子进程消耗的资源。可能无法在所有系统上使用.
resource.
RUSAGE_THREAD
- 通过
getrusage()
请求当前线程消耗的资源。可能并非适用于所有系统.新版本3.2.