[ 
https://issues.apache.org/jira/browse/YARN-8320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16493538#comment-16493538
 ] 

Weiwei Yang commented on YARN-8320:
-----------------------------------

Thanks [~miklos.szeg...@cloudera.com] for sharing your idea. You were right 
that the original idea was to make this easy to use. That says user doesn't 
need to know about what set of cpus their containers will be running on, and 
how they are configured. They just give us a cpu_share_mode, and we do all the 
tricks underneath without exposing too much details.

My concern about the approach you suggested is
 # It might be complex for user to use
 # It should be able to support 2 modes but not very straightforward to support 
4 modes

Allow me take an example like following:

{noformat}
I have a NM with capacity:
  memory: 10gb
  vcore: 10
  cpus: 10 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

Request with just cpu number:
  memory: 1gb
  vcore: 5
  cpuset: 5

After allocation, my NM capacity updates to 
  memory: 9gb
  vcore: 5
  cpus: 5 (0, 1, 2, 3, 4)
{noformat}

there are few problems with such approach
 # User might get confused how many cpus to apply in the resource request. 
Vcore as of today is already a difficult thing to set, adding a new type of 
resource might make this harder.
 # When #vcore is not same as #processor on NM, user will need do some 
calculation to set a reasonable cpuset value in order not to over/less use cpu 
resource, and this is hard for RM to check as it doesn't have all the info like 
NM did
 # Difficult to support all 4 modes under current resource APIs

Please let me know if there is any wrong in this example and the comments.
I agree we can start from supporting EXCLUSIVE+ANY mode in phase 1, but still 
want to make sure the design is able to extend to support both modes (because 
RESERVED/SHARE modes are very useful to improve utilizations). I will 
consolidate all the comments from you and [~leftnoteasy] and come up with a new 
version of design doc next week. Look forward for your comments always.

Thanks

> [Umbrella] Support CPU isolation for latency-sensitive (LS) service
> -------------------------------------------------------------------
>
>                 Key: YARN-8320
>                 URL: https://issues.apache.org/jira/browse/YARN-8320
>             Project: Hadoop YARN
>          Issue Type: New Feature
>          Components: nodemanager
>            Reporter: Jiandan Yang 
>            Priority: Major
>         Attachments: CPU-isolation-for-latency-sensitive-services-v1.pdf, 
> CPU-isolation-for-latency-sensitive-services-v2.pdf, YARN-8320.001.patch
>
>
> Currently NodeManager uses “cpu.cfs_period_us”, “cpu.cfs_quota_us” and 
> “cpu.shares” to isolate cpu resource. However,
>  * Linux Completely Fair Scheduling (CFS) is a throughput-oriented scheduler; 
> no support for differentiated latency
>  * Request latency of services running on container may be frequent shake 
> when all containers share cpus, and latency-sensitive services can not afford 
> in our production environment.
> So we need more fine-grained cpu isolation.
> Here we propose a solution using cgroup cpuset to binds containers to 
> different processors, this is inspired by the isolation technique in [Borg 
> system|http://schd.ws/hosted_files/lcccna2016/a7/CAT%20@%20Scale.pdf].



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to