)]}'
{
  "commit": "e78c3496790ee8a36522a838b59b388e8a709e65",
  "tree": "0473b9ea676754d50b19eb1a862ac16fdffacbeb",
  "parents": [
    "90ed9cbe765ad358b3151a12b8bf889a3cbcd573"
  ],
  "author": {
    "name": "Rik van Riel",
    "email": "riel@redhat.com",
    "time": "Sat Aug 16 13:40:10 2014 -0400"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@kernel.org",
    "time": "Mon Sep 08 08:17:01 2014 +0200"
  },
  "message": "time, signal: Protect resource use statistics with seqlock\n\nBoth times() and clock_gettime(CLOCK_PROCESS_CPUTIME_ID) have scalability\nissues on large systems, due to both functions being serialized with a\nlock.\n\nThe lock protects against reporting a wrong value, due to a thread in the\ntask group exiting, its statistics reporting up to the signal struct, and\nthat exited task\u0027s statistics being counted twice (or not at all).\n\nProtecting that with a lock results in times() and clock_gettime() being\ncompletely serialized on large systems.\n\nThis can be fixed by using a seqlock around the events that gather and\npropagate statistics. As an additional benefit, the protection code can\nbe moved into thread_group_cputime(), slightly simplifying the calling\nfunctions.\n\nIn the case of posix_cpu_clock_get_task() things can be simplified a\nlot, because the calling function already ensures that the task sticks\naround, and the rest is now taken care of in thread_group_cputime().\n\nThis way the statistics reporting code can run lockless.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Peter Zijlstra (Intel) \u003cpeterz@infradead.org\u003e\nCc: Alex Thorlton \u003cathorlton@sgi.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Daeseok Youn \u003cdaeseok.youn@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Dongsheng Yang \u003cyangds.fnst@cn.fujitsu.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Guillaume Morin \u003cguillaume@morinfr.org\u003e\nCc: Ionut Alexa \u003cionut.m.alexa@gmail.com\u003e\nCc: Kees Cook \u003ckeescook@chromium.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Michal Schmidt \u003cmschmidt@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Vladimir Davydov \u003cvdavydov@parallels.com\u003e\nCc: umgwanakikbuti@gmail.com\nCc: fweisbec@gmail.com\nCc: srao@redhat.com\nCc: lwoodman@redhat.com\nCc: atheurer@redhat.com\nLink: http://lkml.kernel.org/r/20140816134010.26a9b572@annuminas.surriel.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5c2c885ee52b3996a2665dc3d8c0e21ff9245aaf",
      "old_mode": 33188,
      "old_path": "include/linux/sched.h",
      "new_id": "dd9eb4807389c50f5595b7cf2d3254fcaa87b3fa",
      "new_mode": 33188,
      "new_path": "include/linux/sched.h"
    },
    {
      "type": "modify",
      "old_id": "b93d46dab6fc016e8a684bc8acb69962278507d4",
      "old_mode": 33188,
      "old_path": "kernel/exit.c",
      "new_id": "fa09b86609db733e441b3cf9d4a815420a908ac3",
      "new_mode": 33188,
      "new_path": "kernel/exit.c"
    },
    {
      "type": "modify",
      "old_id": "0cf9cdb6e4919f254b32d04f6fdeb4943143a8d3",
      "old_mode": 33188,
      "old_path": "kernel/fork.c",
      "new_id": "9387ae8ab048114fda9fb505dbbf97fea1312ed9",
      "new_mode": 33188,
      "new_path": "kernel/fork.c"
    },
    {
      "type": "modify",
      "old_id": "3e52836359baff9bdcc352f523e9374e9754f88d",
      "old_mode": 33188,
      "old_path": "kernel/sched/cputime.c",
      "new_id": "49b7cfe98f7a63ba99574002900660dfeff5296a",
      "new_mode": 33188,
      "new_path": "kernel/sched/cputime.c"
    },
    {
      "type": "modify",
      "old_id": "ce8129192a26029da0d5b33b75daaeb85b1d08e5",
      "old_mode": 33188,
      "old_path": "kernel/sys.c",
      "new_id": "b6636643cbd1c961278f9aca3a08e5bd0ed03219",
      "new_mode": 33188,
      "new_path": "kernel/sys.c"
    },
    {
      "type": "modify",
      "old_id": "3b8946416a5f836227edcf0db8dd1f8b2eb95063",
      "old_mode": 33188,
      "old_path": "kernel/time/posix-cpu-timers.c",
      "new_id": "492b986195d53350abe899b0ecd059f91edb77a4",
      "new_mode": 33188,
      "new_path": "kernel/time/posix-cpu-timers.c"
    }
  ]
}
