)]}'
{
  "commit": "db1b1fefc2cecbff2e4214062fa8c680cb6e7b7d",
  "tree": "ad8e68882f7c36216e16ab264101c5da96ccd5c9",
  "parents": [
    "3055addadbe9bfb2365006a1c13fd342a8d30d52"
  ],
  "author": {
    "name": "Jack Steiner",
    "email": "steiner@sgi.com",
    "time": "Fri Mar 31 02:31:21 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Fri Mar 31 12:18:58 2006 -0800"
  },
  "message": "[PATCH] sched: reduce overhead of calc_load\n\nCurrently, count_active_tasks() calls both nr_running() \u0026\nnr_interruptible().  Each of these functions does a \"for_each_cpu\" \u0026 reads\nvalues from the runqueue of each cpu.  Although this is not a lot of\ninstructions, each runqueue may be located on different node.  Depending on\nthe architecture, a unique TLB entry may be required to access each\nrunqueue.\n\nSince there may be more runqueues than cpu TLB entries, a scan of all\nrunqueues can trash the TLB.  Each memory reference incurs a TLB miss \u0026\nrefill.\n\nIn addition, the runqueue cacheline that contains nr_running \u0026\nnr_uninterruptible may be evicted from the cache between the two passes.\nThis causes unnecessary cache misses.\n\nCombining nr_running() \u0026 nr_interruptible() into a single function\nsubstantially reduces the TLB \u0026 cache misses on large systems.  This should\nhave no measureable effect on smaller systems.\n\nOn a 128p IA64 system running a memory stress workload, the new function\nreduced the overhead of calc_load() from 605 usec/call to 324 usec/call.\n\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d04186d8cc685d9be0ddea01fc94a23b7a6828a7",
      "old_mode": 33188,
      "old_path": "include/linux/sched.h",
      "new_id": "ab84adf5bb9af8f3a36e8445880a37f0794abded",
      "new_mode": 33188,
      "new_path": "include/linux/sched.h"
    },
    {
      "type": "modify",
      "old_id": "a9ecac398bb9b979a4457ea0ade69259c9e7dc53",
      "old_mode": 33188,
      "old_path": "kernel/sched.c",
      "new_id": "6e52e0adff80dfc04fa921dd88a0df7bce8a4a2a",
      "new_mode": 33188,
      "new_path": "kernel/sched.c"
    },
    {
      "type": "modify",
      "old_id": "9062a82ee8ec40d9a6ef985c625bd8daaf5778c5",
      "old_mode": 33188,
      "old_path": "kernel/timer.c",
      "new_id": "6b812c04737b5b611c9d40257f8c3b28292955c4",
      "new_mode": 33188,
      "new_path": "kernel/timer.c"
    }
  ]
}
