[jira] [Commented] (MESOS-6200) Hope mesos support soft and hard cpu/memory resource in the task
[ https://issues.apache.org/jira/browse/MESOS-6200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16897570#comment-16897570 ] Deshi Xiao commented on MESOS-6200: --- thanks.got it. Benjamin Mahler (JIRA) 于 2019年7月31日周三 上午6:25写道: > Hope mesos support soft and hard cpu/memory resource in the task > > > Key: MESOS-6200 > URL: https://issues.apache.org/jira/browse/MESOS-6200 > Project: Mesos > Issue Type: Improvement > Components: containerization, docker, scheduler api >Affects Versions: 0.28.2 > Environment: CentOS 7 > Kernel 3.10.0-327.28.3.el7.x86_64 > Mesos 0.28.2 > Docker 1.11.2 >Reporter: Lei Xu >Priority: Major > Labels: resource-management > > The Docker executor maybe could support soft/hard resource limit to enable > more flexible resources sharing among the applications. > || || CPU || Memory || > | hard limit| --cpu-period & --cpu-quota | --memory & --memory-swap| > | soft limit| --cpu-shares | --memory-reservation| > And now the task protobuf message has only one resource struct that used to > describe the cgroup limit, and the docker executor handle is like the > following, only --memory and --cpu-shares were set: > {code} > if (resources.isSome()) { > // TODO(yifan): Support other resources (e.g. disk). > Option cpus = resources.get().cpus(); > if (cpus.isSome()) { > uint64_t cpuShare = > std::max((uint64_t) (CPU_SHARES_PER_CPU * cpus.get()), > MIN_CPU_SHARES); > argv.push_back("--cpu-shares"); > argv.push_back(stringify(cpuShare)); > } > Option mem = resources.get().mem(); > if (mem.isSome()) { > Bytes memLimit = std::max(mem.get(), MIN_MEMORY); > argv.push_back("--memory"); > argv.push_back(stringify(memLimit.bytes())); > } > } > {code} > I hope that the executor and the protobuf message could separate the resource > to the two parts: soft and hard. Then the user could set 2 levels resource > limits for the docker. -- This message was sent by Atlassian JIRA (v7.6.14#76016)
[jira] [Commented] (MESOS-6200) Hope mesos support soft and hard cpu/memory resource in the task
[ https://issues.apache.org/jira/browse/MESOS-6200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16896580#comment-16896580 ] Benjamin Mahler commented on MESOS-6200: [~xds2000] I think this request is about minimum / maximum container cpu / memory and I don't think that rlimits is the way to accomplish that. We will be working on it via MESOS-9916. > Hope mesos support soft and hard cpu/memory resource in the task > > > Key: MESOS-6200 > URL: https://issues.apache.org/jira/browse/MESOS-6200 > Project: Mesos > Issue Type: Improvement > Components: containerization, docker, scheduler api >Affects Versions: 0.28.2 > Environment: CentOS 7 > Kernel 3.10.0-327.28.3.el7.x86_64 > Mesos 0.28.2 > Docker 1.11.2 >Reporter: Lei Xu >Priority: Major > Labels: resource-management > > The Docker executor maybe could support soft/hard resource limit to enable > more flexible resources sharing among the applications. > || || CPU || Memory || > | hard limit| --cpu-period & --cpu-quota | --memory & --memory-swap| > | soft limit| --cpu-shares | --memory-reservation| > And now the task protobuf message has only one resource struct that used to > describe the cgroup limit, and the docker executor handle is like the > following, only --memory and --cpu-shares were set: > {code} > if (resources.isSome()) { > // TODO(yifan): Support other resources (e.g. disk). > Option cpus = resources.get().cpus(); > if (cpus.isSome()) { > uint64_t cpuShare = > std::max((uint64_t) (CPU_SHARES_PER_CPU * cpus.get()), > MIN_CPU_SHARES); > argv.push_back("--cpu-shares"); > argv.push_back(stringify(cpuShare)); > } > Option mem = resources.get().mem(); > if (mem.isSome()) { > Bytes memLimit = std::max(mem.get(), MIN_MEMORY); > argv.push_back("--memory"); > argv.push_back(stringify(memLimit.bytes())); > } > } > {code} > I hope that the executor and the protobuf message could separate the resource > to the two parts: soft and hard. Then the user could set 2 levels resource > limits for the docker. -- This message was sent by Atlassian JIRA (v7.6.14#76016)
[jira] [Commented] (MESOS-6200) Hope mesos support soft and hard cpu/memory resource in the task
[ https://issues.apache.org/jira/browse/MESOS-6200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16076757#comment-16076757 ] Deshi Xiao commented on MESOS-6200: --- see above comments, the containerized have already support posix/rlimit feature. so this issue is can review and close it. > Hope mesos support soft and hard cpu/memory resource in the task > > > Key: MESOS-6200 > URL: https://issues.apache.org/jira/browse/MESOS-6200 > Project: Mesos > Issue Type: Improvement > Components: cgroups, containerization, docker, scheduler api >Affects Versions: 0.28.2 > Environment: CentOS 7 > Kernel 3.10.0-327.28.3.el7.x86_64 > Mesos 0.28.2 > Docker 1.11.2 >Reporter: Lei Xu > > The Docker executor maybe could support soft/hard resource limit to enable > more flexible resources sharing among the applications. > || || CPU || Memory || > | hard limit| --cpu-period & --cpu-quota | --memory & --memory-swap| > | soft limit| --cpu-shares | --memory-reservation| > And now the task protobuf message has only one resource struct that used to > describe the cgroup limit, and the docker executor handle is like the > following, only --memory and --cpu-shares were set: > {code} > if (resources.isSome()) { > // TODO(yifan): Support other resources (e.g. disk). > Option cpus = resources.get().cpus(); > if (cpus.isSome()) { > uint64_t cpuShare = > std::max((uint64_t) (CPU_SHARES_PER_CPU * cpus.get()), > MIN_CPU_SHARES); > argv.push_back("--cpu-shares"); > argv.push_back(stringify(cpuShare)); > } > Option mem = resources.get().mem(); > if (mem.isSome()) { > Bytes memLimit = std::max(mem.get(), MIN_MEMORY); > argv.push_back("--memory"); > argv.push_back(stringify(memLimit.bytes())); > } > } > {code} > I hope that the executor and the protobuf message could separate the resource > to the two parts: soft and hard. Then the user could set 2 levels resource > limits for the docker. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (MESOS-6200) Hope mesos support soft and hard cpu/memory resource in the task
[ https://issues.apache.org/jira/browse/MESOS-6200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16048767#comment-16048767 ] Deshi Xiao commented on MESOS-6200: --- [~haosd...@gmail.com] any update on this comments. > Hope mesos support soft and hard cpu/memory resource in the task > > > Key: MESOS-6200 > URL: https://issues.apache.org/jira/browse/MESOS-6200 > Project: Mesos > Issue Type: Improvement > Components: cgroups, containerization, docker, scheduler api >Affects Versions: 0.28.2 > Environment: CentOS 7 > Kernel 3.10.0-327.28.3.el7.x86_64 > Mesos 0.28.2 > Docker 1.11.2 >Reporter: Lei Xu > > The Docker executor maybe could support soft/hard resource limit to enable > more flexible resources sharing among the applications. > || || CPU || Memory || > | hard limit| --cpu-period & --cpu-quota | --memory & --memory-swap| > | soft limit| --cpu-shares | --memory-reservation| > And now the task protobuf message has only one resource struct that used to > describe the cgroup limit, and the docker executor handle is like the > following, only --memory and --cpu-shares were set: > {code} > if (resources.isSome()) { > // TODO(yifan): Support other resources (e.g. disk). > Option cpus = resources.get().cpus(); > if (cpus.isSome()) { > uint64_t cpuShare = > std::max((uint64_t) (CPU_SHARES_PER_CPU * cpus.get()), > MIN_CPU_SHARES); > argv.push_back("--cpu-shares"); > argv.push_back(stringify(cpuShare)); > } > Option mem = resources.get().mem(); > if (mem.isSome()) { > Bytes memLimit = std::max(mem.get(), MIN_MEMORY); > argv.push_back("--memory"); > argv.push_back(stringify(memLimit.bytes())); > } > } > {code} > I hope that the executor and the protobuf message could separate the resource > to the two parts: soft and hard. Then the user could set 2 levels resource > limits for the docker. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (MESOS-6200) Hope mesos support soft and hard cpu/memory resource in the task
[ https://issues.apache.org/jira/browse/MESOS-6200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15875965#comment-15875965 ] Christophe HAEN commented on MESOS-6200: Actually it would be nice if one could only specify a soft limit, and let the hard one unlimited. It shows useful in case an application is idle most of the time, and has to answer requests only sporadically. > Hope mesos support soft and hard cpu/memory resource in the task > > > Key: MESOS-6200 > URL: https://issues.apache.org/jira/browse/MESOS-6200 > Project: Mesos > Issue Type: Improvement > Components: cgroups, containerization, docker, scheduler api >Affects Versions: 0.28.2 > Environment: CentOS 7 > Kernel 3.10.0-327.28.3.el7.x86_64 > Mesos 0.28.2 > Docker 1.11.2 >Reporter: Lei Xu > > The Docker executor maybe could support soft/hard resource limit to enable > more flexible resources sharing among the applications. > || || CPU || Memory || > | hard limit| --cpu-period & --cpu-quota | --memory & --memory-swap| > | soft limit| --cpu-shares | --memory-reservation| > And now the task protobuf message has only one resource struct that used to > describe the cgroup limit, and the docker executor handle is like the > following, only --memory and --cpu-shares were set: > {code} > if (resources.isSome()) { > // TODO(yifan): Support other resources (e.g. disk). > Option cpus = resources.get().cpus(); > if (cpus.isSome()) { > uint64_t cpuShare = > std::max((uint64_t) (CPU_SHARES_PER_CPU * cpus.get()), > MIN_CPU_SHARES); > argv.push_back("--cpu-shares"); > argv.push_back(stringify(cpuShare)); > } > Option mem = resources.get().mem(); > if (mem.isSome()) { > Bytes memLimit = std::max(mem.get(), MIN_MEMORY); > argv.push_back("--memory"); > argv.push_back(stringify(memLimit.bytes())); > } > } > {code} > I hope that the executor and the protobuf message could separate the resource > to the two parts: soft and hard. Then the user could set 2 levels resource > limits for the docker. -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Commented] (MESOS-6200) Hope mesos support soft and hard cpu/memory resource in the task
[ https://issues.apache.org/jira/browse/MESOS-6200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15724553#comment-15724553 ] haosdent commented on MESOS-6200: - Soft and hard limit is supported in https://issues.apache.org/jira/browse/MESOS-6426 https://github.com/apache/mesos/blob/master/include/mesos/mesos.proto#L2156-L2157 {code} // Either both are set or both are not set. // If both are not set, it represents unlimited. // If both are set, we require `soft` <= `hard`. optional uint64 hard = 2; optional uint64 soft = 3; {code} > Hope mesos support soft and hard cpu/memory resource in the task > > > Key: MESOS-6200 > URL: https://issues.apache.org/jira/browse/MESOS-6200 > Project: Mesos > Issue Type: Improvement > Components: cgroups, containerization, docker, scheduler api >Affects Versions: 0.28.2 > Environment: CentOS 7 > Kernel 3.10.0-327.28.3.el7.x86_64 > Mesos 0.28.2 > Docker 1.11.2 >Reporter: Lei Xu > > The Docker executor maybe could support soft/hard resource limit to enable > more flexible resources sharing among the applications. > || || CPU || Memory || > | hard limit| --cpu-period & --cpu-quota | --memory & --memory-swap| > | soft limit| --cpu-shares | --memory-reservation| > And now the task protobuf message has only one resource struct that used to > describe the cgroup limit, and the docker executor handle is like the > following, only --memory and --cpu-shares were set: > {code} > if (resources.isSome()) { > // TODO(yifan): Support other resources (e.g. disk). > Option cpus = resources.get().cpus(); > if (cpus.isSome()) { > uint64_t cpuShare = > std::max((uint64_t) (CPU_SHARES_PER_CPU * cpus.get()), > MIN_CPU_SHARES); > argv.push_back("--cpu-shares"); > argv.push_back(stringify(cpuShare)); > } > Option mem = resources.get().mem(); > if (mem.isSome()) { > Bytes memLimit = std::max(mem.get(), MIN_MEMORY); > argv.push_back("--memory"); > argv.push_back(stringify(memLimit.bytes())); > } > } > {code} > I hope that the executor and the protobuf message could separate the resource > to the two parts: soft and hard. Then the user could set 2 levels resource > limits for the docker. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-6200) Hope mesos support soft and hard cpu/memory resource in the task
[ https://issues.apache.org/jira/browse/MESOS-6200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15500642#comment-15500642 ] Lei Xu commented on MESOS-6200: --- yes, but it is a little tricky. I still hope the executor could do all the things with the `resource` field, the user focus on the soft/hard resource limit and the executor set the resource with the correct cmd options or cgroup file value. > Hope mesos support soft and hard cpu/memory resource in the task > > > Key: MESOS-6200 > URL: https://issues.apache.org/jira/browse/MESOS-6200 > Project: Mesos > Issue Type: Improvement > Components: cgroups, containerization, docker, scheduler api >Affects Versions: 0.28.2 > Environment: CentOS 7 > Kernel 3.10.0-327.28.3.el7.x86_64 > Mesos 0.28.2 > Docker 1.11.2 >Reporter: Lei Xu > > The Docker executor maybe could support soft/hard resource limit to enable > more flexible resources sharing among the applications. > || || CPU || Memory || > | hard limit| --cpu-period & --cpu-quota | --memory & --memory-swap| > | soft limit| --cpu-shares | --memory-reservation| > And now the task protobuf message has only one resource struct that used to > describe the cgroup limit, and the docker executor handle is like the > following, only --memory and --cpu-shares were set: > {code} > if (resources.isSome()) { > // TODO(yifan): Support other resources (e.g. disk). > Option cpus = resources.get().cpus(); > if (cpus.isSome()) { > uint64_t cpuShare = > std::max((uint64_t) (CPU_SHARES_PER_CPU * cpus.get()), > MIN_CPU_SHARES); > argv.push_back("--cpu-shares"); > argv.push_back(stringify(cpuShare)); > } > Option mem = resources.get().mem(); > if (mem.isSome()) { > Bytes memLimit = std::max(mem.get(), MIN_MEMORY); > argv.push_back("--memory"); > argv.push_back(stringify(memLimit.bytes())); > } > } > {code} > I hope that the executor and the protobuf message could separate the resource > to the two parts: soft and hard. Then the user could set 2 levels resource > limits for the docker. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-6200) Hope mesos support soft and hard cpu/memory resource in the task
[ https://issues.apache.org/jira/browse/MESOS-6200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15500630#comment-15500630 ] haosdent commented on MESOS-6200: - A workaround for this is to specify these arguments in the {{parameters}} field of {{DockerInfo}}. Then {{Docker::run}} would delegate this to the docker daemon. > Hope mesos support soft and hard cpu/memory resource in the task > > > Key: MESOS-6200 > URL: https://issues.apache.org/jira/browse/MESOS-6200 > Project: Mesos > Issue Type: Improvement > Components: cgroups, containerization, docker, scheduler api >Affects Versions: 0.28.2 > Environment: CentOS 7 > Kernel 3.10.0-327.28.3.el7.x86_64 > Mesos 0.28.2 > Docker 1.11.2 >Reporter: Lei Xu > > The Docker executor maybe could support soft/hard resource limit to enable > more flexible resources sharing among the applications. > || || CPU || Memory || > | hard limit| --cpu-period & --cpu-quota | --memory & --memory-swap| > | soft limit| --cpu-shares | --memory-reservation| > And now the task protobuf message has only one resource struct that used to > describe the cgroup limit, and the docker executor handle is like the > following, only --memory and --cpu-shares were set: > {code} > if (resources.isSome()) { > // TODO(yifan): Support other resources (e.g. disk). > Option cpus = resources.get().cpus(); > if (cpus.isSome()) { > uint64_t cpuShare = > std::max((uint64_t) (CPU_SHARES_PER_CPU * cpus.get()), > MIN_CPU_SHARES); > argv.push_back("--cpu-shares"); > argv.push_back(stringify(cpuShare)); > } > Option mem = resources.get().mem(); > if (mem.isSome()) { > Bytes memLimit = std::max(mem.get(), MIN_MEMORY); > argv.push_back("--memory"); > argv.push_back(stringify(memLimit.bytes())); > } > } > {code} > I hope that the executor and the protobuf message could separate the resource > to the two parts: soft and hard. Then the user could set 2 levels resource > limits for the docker. -- This message was sent by Atlassian JIRA (v6.3.4#6332)