我们希望每隔几个月为用户分配一定数量的 CPU 时间和 RAM 小时。这是在 Linux 服务器上。我认为它process accounting
可以帮助跟踪使用情况,但它不会强制执行使用策略。强制执行使用策略的好方法是什么?我们想要的是类似于银行账户的东西,用户可以从中提取 CPU 时间和内存小时。
如果我理解正确的话,ulimit 会限制每个 shell 实例的不同资源,因此似乎不够充分。如果我对 ulimit 的理解有误,请您纠正,我将不胜感激。我怀疑我错了。
答案1
查看 cgroups
http://en.wikipedia.org/wiki/Cgroups
cgroups(控制组)是 Linux 内核的一项功能,用于限制、计算和隔离进程组的资源使用情况(CPU、内存、磁盘 I/O 等)。
RedHat 的演示
答案2
pam_限制是您可以尝试的一个选项。选项设置并记录在 /etc/security/limit.conf 中,您可以根据用户将其设置为最低:
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4