)]}'
{
  "commit": "332ac17ef5bfcff4766dfdfd3b4cdf10b8f8f155",
  "tree": "84c6663542da4310c5c555afaac88ac9b696fe4b",
  "parents": [
    "2d3d891d3344159d5b452a645e355bbe29591e8b"
  ],
  "author": {
    "name": "Dario Faggioli",
    "email": "raistlin@linux.it",
    "time": "Thu Nov 07 14:43:45 2013 +0100"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@kernel.org",
    "time": "Mon Jan 13 13:46:42 2014 +0100"
  },
  "message": "sched/deadline: Add bandwidth management for SCHED_DEADLINE tasks\n\nIn order of deadline scheduling to be effective and useful, it is\nimportant that some method of having the allocation of the available\nCPU bandwidth to tasks and task groups under control.\nThis is usually called \"admission control\" and if it is not performed\nat all, no guarantee can be given on the actual scheduling of the\n-deadline tasks.\n\nSince when RT-throttling has been introduced each task group have a\nbandwidth associated to itself, calculated as a certain amount of\nruntime over a period. Moreover, to make it possible to manipulate\nsuch bandwidth, readable/writable controls have been added to both\nprocfs (for system wide settings) and cgroupfs (for per-group\nsettings).\n\nTherefore, the same interface is being used for controlling the\nbandwidth distrubution to -deadline tasks and task groups, i.e.,\nnew controls but with similar names, equivalent meaning and with\nthe same usage paradigm are added.\n\nHowever, more discussion is needed in order to figure out how\nwe want to manage SCHED_DEADLINE bandwidth at the task group level.\nTherefore, this patch adds a less sophisticated, but actually\nvery sensible, mechanism to ensure that a certain utilization\ncap is not overcome per each root_domain (the single rq for !SMP\nconfigurations).\n\nAnother main difference between deadline bandwidth management and\nRT-throttling is that -deadline tasks have bandwidth on their own\n(while -rt ones doesn\u0027t!), and thus we don\u0027t need an higher level\nthrottling mechanism to enforce the desired bandwidth.\n\nThis patch, therefore:\n\n - adds system wide deadline bandwidth management by means of:\n    * /proc/sys/kernel/sched_dl_runtime_us,\n    * /proc/sys/kernel/sched_dl_period_us,\n   that determine (i.e., runtime / period) the total bandwidth\n   available on each CPU of each root_domain for -deadline tasks;\n\n - couples the RT and deadline bandwidth management, i.e., enforces\n   that the sum of how much bandwidth is being devoted to -rt\n   -deadline tasks to stay below 100%.\n\nThis means that, for a root_domain comprising M CPUs, -deadline tasks\ncan be created until the sum of their bandwidths stay below:\n\n    M * (sched_dl_runtime_us / sched_dl_period_us)\n\nIt is also possible to disable this bandwidth management logic, and\nbe thus free of oversubscribing the system up to any arbitrary level.\n\nSigned-off-by: Dario Faggioli \u003craistlin@linux.it\u003e\nSigned-off-by: Juri Lelli \u003cjuri.lelli@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/1383831828-15501-12-git-send-email-juri.lelli@gmail.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "13c53a99920fc4bc3227b32fd871ccb5d183f33f",
      "old_mode": 33188,
      "old_path": "include/linux/sched.h",
      "new_id": "a196cb7fc6f2267833597641fe7dbba95bee7f1f",
      "new_mode": 33188,
      "new_path": "include/linux/sched.h"
    },
    {
      "type": "modify",
      "old_id": "31e0193cb0c5b06c505742c3ec21e41a902ea6ed",
      "old_mode": 33188,
      "old_path": "include/linux/sched/sysctl.h",
      "new_id": "8070a83dbedc2dc2f5f5c2f9437c00c3cfd70ca9",
      "new_mode": 33188,
      "new_path": "include/linux/sched/sysctl.h"
    },
    {
      "type": "modify",
      "old_id": "599ee3b11b443e6c39ea31be0643f967c7da1eaf",
      "old_mode": 33188,
      "old_path": "kernel/sched/core.c",
      "new_id": "c7c68e6b5c51ae992048e5c8c45ca2241d185d83",
      "new_mode": 33188,
      "new_path": "kernel/sched/core.c"
    },
    {
      "type": "modify",
      "old_id": "7f6de4316990ba18e55f04ed767af16c218e1db3",
      "old_mode": 33188,
      "old_path": "kernel/sched/deadline.c",
      "new_id": "802188fb63389a4a3c77d2e3e3d29bf16b1e9a23",
      "new_mode": 33188,
      "new_path": "kernel/sched/deadline.c"
    },
    {
      "type": "modify",
      "old_id": "52453a2d0a79cb861c360a63e1a46abf5e01bade",
      "old_mode": 33188,
      "old_path": "kernel/sched/sched.h",
      "new_id": "ad4f4fbd002e291cfb488685a4dc1da7c5d33ae2",
      "new_mode": 33188,
      "new_path": "kernel/sched/sched.h"
    },
    {
      "type": "modify",
      "old_id": "c8da99f905cf522a34dd7ff059bde584e4d8c90a",
      "old_mode": 33188,
      "old_path": "kernel/sysctl.c",
      "new_id": "c7fb0790ac63b5441cac586ff6047280b4761ecc",
      "new_mode": 33188,
      "new_path": "kernel/sysctl.c"
    }
  ]
}
