Skip to content

Commit fc72ac6

Browse files
yankayshin-
authored andcommitted
support MemoryReservation and KernelMemory
Signed-off-by: Kay Yan <[email protected]>
1 parent 7b7e07e commit fc72ac6

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

docker/utils/utils.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -613,8 +613,10 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
613613
cap_drop=None, devices=None, extra_hosts=None,
614614
read_only=None, pid_mode=None, ipc_mode=None,
615615
security_opt=None, ulimits=None, log_config=None,
616-
mem_limit=None, memswap_limit=None, mem_swappiness=None,
617-
cgroup_parent=None, group_add=None, cpu_quota=None,
616+
mem_limit=None, memswap_limit=None,
617+
mem_reservation=None, kernel_memory=None,
618+
mem_swappiness=None, cgroup_parent=None,
619+
group_add=None, cpu_quota=None,
618620
cpu_period=None, blkio_weight=None,
619621
blkio_weight_device=None, device_read_bps=None,
620622
device_write_bps=None, device_read_iops=None,
@@ -638,6 +640,18 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
638640
if memswap_limit is not None:
639641
host_config['MemorySwap'] = parse_bytes(memswap_limit)
640642

643+
if mem_reservation:
644+
if version_lt(version, '1.21'):
645+
raise host_config_version_error('mem_reservation', '1.21')
646+
647+
host_config['MemoryReservation'] = parse_bytes(mem_reservation)
648+
649+
if kernel_memory:
650+
if version_lt(version, '1.21'):
651+
raise host_config_version_error('kernel_memory', '1.21')
652+
653+
host_config['KernelMemory'] = parse_bytes(kernel_memory)
654+
641655
if mem_swappiness is not None:
642656
if version_lt(version, '1.20'):
643657
raise host_config_version_error('mem_swappiness', '1.20')

tests/unit/utils_test.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,20 @@ def test_create_endpoint_config_with_aliases(self):
171171
with pytest.raises(InvalidVersion):
172172
create_endpoint_config(version='1.21', aliases=['foo', 'bar'])
173173

174+
def test_create_host_config_with_mem_reservation(self):
175+
config = create_host_config(version='1.21', mem_reservation=67108864)
176+
self.assertEqual(config.get('MemoryReservation'), 67108864)
177+
self.assertRaises(
178+
InvalidVersion, lambda: create_host_config(
179+
version='1.20', mem_reservation=67108864))
180+
181+
def test_create_host_config_with_kernel_memory(self):
182+
config = create_host_config(version='1.21', kernel_memory=67108864)
183+
self.assertEqual(config.get('KernelMemory'), 67108864)
184+
self.assertRaises(
185+
InvalidVersion, lambda: create_host_config(
186+
version='1.20', kernel_memory=67108864))
187+
174188

175189
class UlimitTest(base.BaseTestCase):
176190
def test_create_host_config_dict_ulimit(self):

0 commit comments

Comments
 (0)