{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17035","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17035/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17035/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17035/events","html_url":"https://github.com/kubernetes/kubernetes/issues/17035","id":115994343,"number":17035,"title":"Sketch of GPU support","user":{"login":"erictune","id":8105590,"avatar_url":"https://avatars.githubusercontent.com/u/8105590?v=3","gravatar_id":"","url":"https://api.github.com/users/erictune","html_url":"https://github.com/erictune","followers_url":"https://api.github.com/users/erictune/followers","following_url":"https://api.github.com/users/erictune/following{/other_user}","gists_url":"https://api.github.com/users/erictune/gists{/gist_id}","starred_url":"https://api.github.com/users/erictune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erictune/subscriptions","organizations_url":"https://api.github.com/users/erictune/orgs","repos_url":"https://api.github.com/users/erictune/repos","events_url":"https://api.github.com/users/erictune/events{/privacy}","received_events_url":"https://api.github.com/users/erictune/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/performance","name":"area/performance","color":"d4c5f9"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/priority/P1","name":"priority/P1","color":"eb6420"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/team/control-plane","name":"team/control-plane","color":"d2b48c"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/team/node","name":"team/node","color":"d2b48c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":20,"created_at":"2015-11-09T23:51:57Z","updated_at":"2015-12-11T18:38:49Z","closed_at":null,"body":"GPU support:\r\n\r\n1. scheduler support (most important)\r\n1. kubelet looks in some flag-configured directory, and sees a file or files that tell it \"you have this many of resource example.com/mygpu\"\r\n1. scheduler feasibility check that uses any type of resource that any pod or node mentions wanting/having.\r\n1. kubelet support for logical devices, so that containers only see their own GPUs. (less important, but nice to have)\r\n  1. a way to tell kubelet that this set of phsical devices `/dev/nv0` ... `/dev/nv3` are fungible, and map to resource `example.com/mygpu`.\r\n  1. kubelet code to allocate devices, and map them into pods\r\n1. scheduler support for defragging the resource (once we have a rescheduler).\r\n\r\n@thockin @davidopp \r\nrequested by @therc \r\n\r\n"},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/164013350","html_url":"https://github.com/kubernetes/kubernetes/issues/17035#issuecomment-164013350","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17035","id":164013350,"user":{"login":"thockin","id":5595220,"avatar_url":"https://avatars.githubusercontent.com/u/5595220?v=3","gravatar_id":"","url":"https://api.github.com/users/thockin","html_url":"https://github.com/thockin","followers_url":"https://api.github.com/users/thockin/followers","following_url":"https://api.github.com/users/thockin/following{/other_user}","gists_url":"https://api.github.com/users/thockin/gists{/gist_id}","starred_url":"https://api.github.com/users/thockin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thockin/subscriptions","organizations_url":"https://api.github.com/users/thockin/orgs","repos_url":"https://api.github.com/users/thockin/repos","events_url":"https://api.github.com/users/thockin/events{/privacy}","received_events_url":"https://api.github.com/users/thockin/received_events","type":"User","site_admin":false},"created_at":"2015-12-11T18:38:49Z","updated_at":"2015-12-11T18:38:49Z","body":"WRT  the any vs old/new - We don't currently report \"free\" resources on a node, but if/when we do - can it change over time? It has to be possible, right?\r\n\r\nCan we define `example.com/new-gpu`, `example.com/old-gpu`, and `example.com/any-gpu` and say that their quantities are not independent variables?  When I allocate an \"any\" and am granted a \"new\", the counts of  both \"any\" and \"new\" go down.  Yeah, this means there may be scheduling decisions made that are now invalidated (since scheduler doesn't know they are linked) but we have to handle that anyway"}}