From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932199AbcHNO1j (ORCPT ); Sun, 14 Aug 2016 10:27:39 -0400 Received: from ms01.sssup.it ([193.205.80.99]:31217 "EHLO sssup.it" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752423AbcHNO1f (ORCPT ); Sun, 14 Aug 2016 10:27:35 -0400 From: Tommaso Cucinotta To: Luca Abeni , Juri Lelli , Peter Zijlstra , Ingo Molnar Cc: linux-kernel@vger.kernel.org, linux-dl@retis.sssup.it, Tommaso Cucinotta Subject: SCHED_DEADLINE cpudeadline.{h,c} fixup Date: Sun, 14 Aug 2016 16:27:05 +0200 Message-Id: <1471184828-12644-1-git-send-email-tommaso.cucinotta@sssup.it> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1468880275-4338-1-git-send-email-tommaso.cucinotta@sssup.it> References: <1468880275-4338-1-git-send-email-tommaso.cucinotta@sssup.it> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, this is a rework of the cpudeadline bugfix and speed-up patch-set, that integrates all comments received so far from Luca, Juri and Peter. Compared with the previous post, here: -) I'm keeping out the minimally invasive bugfix, as it's already been merged in tip/sched/core -) I moved some little code refactory around change_key_dl() out of the (now) 2nd patch, to the 1st one. Now the 2nd (speed-up) patch just changes the heapify_up/down() functions -) I rebased on top of commit f0b22e39 -) I repeated an extensive set of tests through the framework published separately at: https://github.com/tomcucinotta/cpudl-bench repeating new no-behavior-change tests, new heap-consistency tests, and new a/b benchmarks (I'm working on a new i5 laptop now), results at: https://github.com/tomcucinotta/cpudl-bench/blob/master/cpudl-100000.pdf highlighting up to a 14% speed-up when averaging over 100K ops. See the enclosed README in that repo for more info. I'm leaving below the original description of all 4 patches. -- The first patch is a minimally invasive (1-line) fix for the deadline wrap-around bug. This leaves some weirdness in how cpudl_change_key() is called. Therefore, the second patch does a minimum of refactory to make things more explicit and clear. The 3rd patch contains now the actual performance enhancement (avoiding unneeded swaps during heapify operations), which has been measured to achieve up to 14% of speed-up for cpudl_set() calls. This has been measured with a randomly generated workload of 1K,10K,100K random heap insertions and deletions (75% cpudl_set() calls with is_valid=1 and 25% with is_valid=0), and randomly generated cpu IDs, with up to 256 CPUs. Benchmarking code at: https://github.com/tomcucinotta/cpudl-bench Finally, the 4th patch is another clear-up patch touching cpudeadline.{h,c} and deadline.c. Now you call cpudl_clear(cp, cpu) and cpudl_set(cp, cpu, dl) instead of cpudl_set(cp, cpu, 0 /* dl */, 0 /* is_valid */) and cpudl_set(cp, cpu, dl, 1 /* is_valid */). Any further comment is welcome, thanks! Tommaso --