Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117754309
cgroup-limits
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None
cgroup-limits
View Options
#!/usr/bin/python
"""
Script for parsing cgroup information
This script will read some limits from the cgroup system and parse
them, printing out "VARIABLE=VALUE" on each line for every limit that is
successfully read. Output of this script can be directly fed into
bash's export command. Recommended usage from a bash script:
set -o errexit
export_vars=$(cgroup-limits) ; export $export_vars
Variables currently supported:
MAX_MEMORY_LIMIT_IN_BYTES
Maximum possible limit MEMORY_LIMIT_IN_BYTES can have. This is
currently constant value of 9223372036854775807.
MEMORY_LIMIT_IN_BYTES
Maximum amount of user memory in bytes. If this value is set
to the same value as MAX_MEMORY_LIMIT_IN_BYTES, it means that
there is no limit set. The value is taken from
/sys/fs/cgroup/memory/memory.limit_in_bytes
NUMBER_OF_CORES
Number of detected CPU cores that can be used. This value is
calculated from /sys/fs/cgroup/cpuset/cpuset.cpus
NO_MEMORY_LIMIT
Set to "true" if MEMORY_LIMIT_IN_BYTES is so high that the caller
can act as if no memory limit was set. Undefined otherwise.
"""
from
__future__
import
print_function
import
sys
def
_read_file
(
path
):
try
:
with
open
(
path
,
'r'
)
as
f
:
return
f
.
read
()
.
strip
()
except
IOError
:
return
None
def
get_memory_limit
():
"""
Read memory limit, in bytes.
"""
limit
=
_read_file
(
'/sys/fs/cgroup/memory/memory.limit_in_bytes'
)
if
limit
is
None
or
not
limit
.
isdigit
():
print
(
"Warning: Can't detect memory limit from cgroups"
,
file
=
sys
.
stderr
)
return
None
return
int
(
limit
)
def
get_number_of_cores
():
"""
Read number of CPU cores.
"""
core_count
=
0
line
=
_read_file
(
'/sys/fs/cgroup/cpuset/cpuset.cpus'
)
if
line
is
None
:
print
(
"Warning: Can't detect number of CPU cores from cgroups"
,
file
=
sys
.
stderr
)
return
None
for
group
in
line
.
split
(
','
):
core_ids
=
list
(
map
(
int
,
group
.
split
(
'-'
)))
if
len
(
core_ids
)
==
2
:
core_count
+=
core_ids
[
1
]
-
core_ids
[
0
]
+
1
else
:
core_count
+=
1
return
core_count
if
__name__
==
"__main__"
:
env_vars
=
{
"MAX_MEMORY_LIMIT_IN_BYTES"
:
9223372036854775807
,
"MEMORY_LIMIT_IN_BYTES"
:
get_memory_limit
(),
"NUMBER_OF_CORES"
:
get_number_of_cores
()
}
env_vars
=
{
k
:
v
for
k
,
v
in
env_vars
.
items
()
if
v
is
not
None
}
if
env_vars
.
get
(
"MEMORY_LIMIT_IN_BYTES"
,
0
)
>=
92233720368547
:
env_vars
[
"NO_MEMORY_LIMIT"
]
=
"true"
for
key
,
value
in
env_vars
.
items
():
print
(
"{0}={1}"
.
format
(
key
,
value
))
File Metadata
Details
Attached
Mime Type
text/x-script.python
Expires
Sat, Apr 4, 6:49 AM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18822915
Default Alt Text
cgroup-limits (2 KB)
Attached To
Mode
rKOLABSTWOICORE kolab-s2i-core
Attached
Detach File
Event Timeline