Author mcnelsonphd
Recipients Manjusaka, christian.heimes, jab, keirlawson, matrixise, mcnelsonphd
Date 2019-10-01.12:46:23
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1569933983.49.0.940090301415.issue36054@roundup.psfhosted.org>
In-reply-to
Content
Is this issue still being worked on as a core feature? I needed a solution for this using 2.7.11 to enable some old code to work properly/nicely in a container environment on AWS Batch and was forced to figure out what OpenJDK was doing and came up with a solution. The process in OpenJDK seems to be, find where the cgroups for docker are located in the file system, then depending on the values in different files you can determine the number of CPUs available. 

The inelegant code below is what worked for me:

def query_cpu():
	if os.path.isfile('/sys/fs/cgroup/cpu/cpu.cfs_quota_us'):
		cpu_quota = int(open('/sys/fs/cgroup/cpu/cpu.cfs_quota_us').read().rstrip())
		#print(cpu_quota) # Not useful for AWS Batch based jobs as result is -1, but works on local linux systems
	if cpu_quota != -1 and os.path.isfile('/sys/fs/cgroup/cpu/cpu.cfs_period_us'):
		cpu_period = int(open('/sys/fs/cgroup/cpu/cpu.cfs_period_us').read().rstrip())
		#print(cpu_period)
		avail_cpu = int(cpu_quota / cpu_period) # Divide quota by period and you should get num of allotted CPU to the container, rounded down if fractional.
	elif os.path.isfile('/sys/fs/cgroup/cpu/cpu.shares'):
		cpu_shares = int(open('/sys/fs/cgroup/cpu/cpu.shares').read().rstrip())
		#print(cpu_shares) # For AWS, gives correct value * 1024.
		avail_cpu = int(cpu_shares / 1024)
	return avail_cpu


This solution makes several assumptions about the cgroup locations within the container vs dynamically finding where those files are located as OpenJDK does. I also haven't included the more robust method in case cpu.quota and cpu.shares are -1.

Hopefully this is a start for getting this implemented.
History
Date User Action Args
2019-10-01 12:46:23mcnelsonphdsetrecipients: + mcnelsonphd, christian.heimes, jab, matrixise, Manjusaka, keirlawson
2019-10-01 12:46:23mcnelsonphdsetmessageid: <1569933983.49.0.940090301415.issue36054@roundup.psfhosted.org>
2019-10-01 12:46:23mcnelsonphdlinkissue36054 messages
2019-10-01 12:46:23mcnelsonphdcreate