From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750794AbYIVEfJ (ORCPT ); Mon, 22 Sep 2008 00:35:09 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752105AbYIVEew (ORCPT ); Mon, 22 Sep 2008 00:34:52 -0400 Received: from e2.ny.us.ibm.com ([32.97.182.142]:39105 "EHLO e2.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752033AbYIVEev (ORCPT ); Mon, 22 Sep 2008 00:34:51 -0400 From: Krishna Kumar To: linux-kernel@vger.kernel.org Cc: Andrew Morton , Krishna Kumar Date: Mon, 22 Sep 2008 10:04:25 +0530 Message-Id: <20080922043425.21118.24172.sendpatchset@localhost.localdomain> Subject: [RFC] [PATCH 0/1] timers: add_timer should never be called if pending Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Krishna Kumar (Hopefully this is not something that has been suggested earlier and rejected). add_timer should never be called on a pending timer - such bugs should be caught by reports generated by debug kernels. It is the responsibility of the subsystem users to ensure that timers are not added twice. Using the add_timer_on interface reduces the code that checks if the timer is pending, the timer_base change, updating 'expires' two times, etc. 1. Single CPU, Single Timer: Add the same timer serially on one CPU - do this many times. Laptop (2 way Xeon): Saves 10.8% ORG: Time: 35359 NEW: Time: 31527 Server (4 way x86-64): Saves 7.9% ORG: Time: 4520 NEW: Time: 4164 2. Single CPU, Multiple Timer: Add different timers serially on one CPU - do this many times. Laptop (2 way Xeon): Saves 7.7% ORG: Time: 133728 NEW: Time: 144822 Server (4 way x86-64): Saves 15.7% ORG: Time: 69012 NEW: Time: 58186 3. Many CPU's, Single Timer: Add the same timer in parallel on all CPUs - do this many times. Laptop (2 way Xeon): Saves 14% ORG: Time: 69845 NEW: Time: 60067 Server (4 way x86-64): Saves 21.8% ORG: Time: 18047 NEW: Time: 14116 4. Many CPU's, Multiple Timer: Add different timers in parallel on all CPUs - do this many times. Laptop (2 way Xeon): Saves 47.1% ORG: Time: 292173 NEW: Time: 154485 Server (4 way x86-64): Saves 8.23 ORG: Time: 319129 NEW: Time: 292842