)]}'
{
  "commit": "333c5ae9948194428fe6c5ef5c088304fc98263b",
  "tree": "83d1cf3a781642e2c366086e0b9e244a7b60fae5",
  "parents": [
    "7467571f4480b273007517b26297c07154c73924"
  ],
  "author": {
    "name": "Tim Chen",
    "email": "tim.c.chen@linux.intel.com",
    "time": "Fri Feb 11 12:49:04 2011 -0800"
  },
  "committer": {
    "name": "Len Brown",
    "email": "len.brown@intel.com",
    "time": "Sun May 29 00:50:59 2011 -0400"
  },
  "message": "idle governor: Avoid lock acquisition to read pm_qos before entering idle\n\nThanks to the reviews and comments by Rafael, James, Mark and Andi.\nHere\u0027s version 2 of the patch incorporating your comments and also some\nupdate to my previous patch comments.\n\nI noticed that before entering idle state, the menu idle governor will\nlook up the current pm_qos target value according to the list of qos\nrequests received.  This look up currently needs the acquisition of a\nlock to access the list of qos requests to find the qos target value,\nslowing down the entrance into idle state due to contention by multiple\ncpus to access this list.  The contention is severe when there are a lot\nof cpus waking and going into idle.  For example, for a simple workload\nthat has 32 pair of processes ping ponging messages to each other, where\n64 cpu cores are active in test system, I see the following profile with\n37.82% of cpu cycles spent in contention of pm_qos_lock:\n\n-     37.82%          swapper  [kernel.kallsyms]          [k]\n_raw_spin_lock_irqsave\n   - _raw_spin_lock_irqsave\n      - 95.65% pm_qos_request\n           menu_select\n           cpuidle_idle_call\n         - cpu_idle\n              99.98% start_secondary\n\nA better approach will be to cache the updated pm_qos target value so\nreading it does not require lock acquisition as in the patch below.\nWith this patch the contention for pm_qos_lock is removed and I saw a\n2.2X increase in throughput for my message passing workload.\n\ncc: stable@kernel.org\nSigned-off-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\nAcked-by: mark gross \u003cmarkgross@thegnar.org\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "77cbddb3784cf7bf390e49e6035633f827d85175",
      "old_mode": 33188,
      "old_path": "include/linux/pm_qos_params.h",
      "new_id": "a7d87f911cabbbe7b1c8d9eabb01c8667e86fb6d",
      "new_mode": 33188,
      "new_path": "include/linux/pm_qos_params.h"
    },
    {
      "type": "modify",
      "old_id": "aeaa7f8468216eb1d8795b14ff74cfc502318771",
      "old_mode": 33188,
      "old_path": "kernel/pm_qos_params.c",
      "new_id": "6a8fad82a3ad4722101f0a6fc2fc349b93c81f93",
      "new_mode": 33188,
      "new_path": "kernel/pm_qos_params.c"
    }
  ]
}
