This snippet of code appears wrong... Either that, or the accompanying comment is wrong? from kernel/sched.c::find_busiest_queue(): | *imbalance = (max_load - nr_running) / 2; | | /* It needs an at least ~25% imbalance to trigger balancing. */ | if (!idle && (*imbalance < (max_load + 3)/4)) { | busiest = NULL; | goto out; | } The comment says 25% imbalance, but the code is really checking for a ~50% imbalance. The attatched patch moves the division by two to the pull_task function where the imbalance number is actually used. This patch makes the code match the comment, and divides the imbalance by two where it is needed. Please let me know if I've misinterpreted what this code is supposed to be doing, -or- if we really want the comment to match the current code. Cheers! -Matt