)]}'
{
  "commit": "bf51935f3e988e0ed6f34b55593e5912f990750a",
  "tree": "7fc82ce1c63eef89ce9a086859d2dc0eaedde363",
  "parents": [
    "be716615fe596ee117292dc615e95f707fb67fd1"
  ],
  "author": {
    "name": "Paul E. McKenney",
    "email": "paulmck@linux.vnet.ibm.com",
    "time": "Tue Feb 17 06:01:30 2009 -0800"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Tue Feb 17 22:47:45 2009 +0100"
  },
  "message": "x86, rcu: fix strange load average and ksoftirqd behavior\n\nDamien Wyart reported high ksoftirqd CPU usage (20%) on an\notherwise idle system.\n\nThe function-graph trace Damien provided:\n\n\u003e   799.521187 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.521371 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.521555 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.521738 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.521934 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.522068 |   1)  ksoftir-2324  |               |                rcu_check_callbacks() {\n\u003e   799.522208 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.522392 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.522575 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.522759 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.522956 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.523074 |   1)  ksoftir-2324  |               |                  rcu_check_callbacks() {\n\u003e   799.523214 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.523397 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.523579 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.523762 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.523960 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.524079 |   1)  ksoftir-2324  |               |                  rcu_check_callbacks() {\n\u003e   799.524220 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.524403 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.524587 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e   799.524770 |   1)    \u003cidle\u003e-0    |               |  rcu_check_callbacks() {\n\u003e [ . . . ]\n\nShows rcu_check_callbacks() being invoked way too often. It should be called\nonce per jiffy, and here it is called no less than 22 times in about\n3.5 milliseconds, meaning one call every 160 microseconds or so.\n\nWhy do we need to call rcu_pending() and rcu_check_callbacks() from the\nidle loop of 32-bit x86, especially given that no other architecture does\nthis?\n\nThe following patch removes the call to rcu_pending() and\nrcu_check_callbacks() from the x86 32-bit idle loop in order to\nreduce the softirq load on idle systems.\n\nReported-by: Damien Wyart \u003cdamien.wyart@free.fr\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a546f55c77b4639f5e3f5773a1599d81cc53432d",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/process_32.c",
      "new_id": "bd4da2af08aec72ff1933eea7164a2b3d8f73139",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/process_32.c"
    }
  ]
}
