Received: by 10.223.164.221 with SMTP id h29csp268536wrb; Fri, 3 Nov 2017 14:12:57 -0700 (PDT) X-Google-Smtp-Source: ABhQp+TKY0gw1nJsimb0MiYVa1EVfNvaQkf5jY2+Y2hPzEjSrz6wDO4u/Za9tWSFo5OwKpSC6pP3 X-Received: by 10.84.218.141 with SMTP id r13mr7848018pli.53.1509743577753; Fri, 03 Nov 2017 14:12:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509743577; cv=none; d=google.com; s=arc-20160816; b=q2ba5Uls9TJvgS+2oKfRzolp/SoCbi62PxOf9QYe9g1JKKdrGqIbIc+S1L4b1Yaw9p dkWexERoI+PX7Ui7VqoWSJlvo+PxsSOVRTbs3OSRDYRGe6YO6vKBGg+Ju5m/x3aIBYh1 9jDarq3tP/DpEX+joU67AI7FClIE79V3QrvRAcSXGvyg375TUPQfeDmerq9R3+9gamNq BzmVk366+UGFvsj8CukLlyzlzbYoI2LZv/Sqd2MLbrr1bVm9MHYmyh0PIAQwYQVu4GY2 ZZg+QlvS+IbpSDE5zOxNX3LACF+z+2rRCYO992k7WjLuwSPHRr8nLvbBAJ/iv7J5FsZK W+Og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :organization:message-id:subject:cc:to:from:date:dmarc-filter :arc-authentication-results; bh=BIfWTozTcOErW2RdSpK+TjSLs4eBpwdGQsm5DIWrVk0=; b=zgaCNWkEmBlrHt/HrKWDQzNHfIwgiaV4Jg7uMSudP2zZH2VM2LDwtUJ6wvcIDEg8hs aHF8ryd9jAn2SdKKPu3S+mz4KldLGZ155GfdS9q1G7mNxSJPry/kfFJmE7jnlFiuZA1e pn5xKwEAgq79SR5QDyC7poqFZB0+k917rPQOBcevoPJTROAOhAKtrymSYW5DiuBl4Njx yNSAonc8vSbHQtnBcq6TPtenMPiZ1EbMKMtkmvw/R0Osf7Cvmo5x5ZYqvuxn2LJ2RDtT IX0LOKmliDaDgk6P+8GYVo+ryQwhJH2DDbX2R2xARXyzL+zuTHzIsajA9tpq8g/uOZ2a B0Kg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t3si5286113plm.311.2017.11.03.14.12.45; Fri, 03 Nov 2017 14:12:57 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754855AbdKCVMH (ORCPT + 92 others); Fri, 3 Nov 2017 17:12:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45616 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752114AbdKCVMF (ORCPT ); Fri, 3 Nov 2017 17:12:05 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AF075C0587FA; Fri, 3 Nov 2017 21:12:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com AF075C0587FA Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=lcapitulino@redhat.com Received: from localhost (ovpn-116-61.phx2.redhat.com [10.3.116.61]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8DD5B5EE02; Fri, 3 Nov 2017 21:12:04 +0000 (UTC) Date: Fri, 3 Nov 2017 17:12:03 -0400 From: Luiz Capitulino To: fweisbec@gmail.com Cc: tglx@linutronix.de, mtosatti@redhat.com, williams@redhat.com, nicstange@gmail.com, linux-kernel@vger.kernel.org Subject: [nohz_full/apic] multiple timer interrupts a second Message-ID: <20171103170703.46d72a31@redhat.com> Organization: Red Hat MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Fri, 03 Nov 2017 21:12:05 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [CC'ing lkml this time] Hi, I've observed that smp_apic_timer_interrupt() is sometimes called two or more times a second on a nohz_full core which has a single task taking 100% of the core. In one of the calls, hrtimer_interrupt() runs tick_sched_timer(), but in others it doesn't call any handler. Here's an example (Linus HEAD f34157878): <...>-1831 [008] 1060.115578: funcgraph_entry: | smp_apic_timer_interrupt() { <...>-1831 [008] 1060.115578: funcgraph_entry: | hrtimer_interrupt() { <...>-1831 [008] 1060.115578: hrtimer_expire_entry: hrtimer=0xffff8edfefd12d60 function=tick_sched_timer now=1060079001980 <...>-1831 [008] 1060.115578: funcgraph_entry: 1.172 us | tick_sched_timer(); <...>-1831 [008] 1060.115580: funcgraph_exit: 1.757 us | } <...>-1831 [008] 1060.115580: hrtimer_start: hrtimer=0xffff8edfefd12d60 function=tick_sched_timer expires=1061079000000 softexpires=1061079000000 <...>-1831 [008] 1060.115581: funcgraph_exit: 3.026 us | } <...>-1831 [008] 1061.115577: funcgraph_entry: | smp_apic_timer_interrupt() { <...>-1831 [008] 1061.115577: funcgraph_entry: 0.261 us | hrtimer_interrupt(); <---------- NO handler called <...>-1831 [008] 1061.115578: funcgraph_exit: 1.349 us | } <...>-1831 [008] 1061.115579: funcgraph_entry: | smp_apic_timer_interrupt() { <...>-1831 [008] 1061.115579: funcgraph_entry: | hrtimer_interrupt() { <...>-1831 [008] 1061.115579: hrtimer_expire_entry: hrtimer=0xffff8edfefd12d60 function=tick_sched_timer now=1061079001473 <...>-1831 [008] 1061.115580: funcgraph_entry: 1.413 us | tick_sched_timer(); <...>-1831 [008] 1061.115581: funcgraph_exit: 2.124 us | } <...>-1831 [008] 1061.115582: hrtimer_start: hrtimer=0xffff8edfefd12d60 function=tick_sched_timer expires=1062079000000 softexpires=1062079000000 <...>-1831 [008] 1061.115582: funcgraph_exit: 3.255 us | } Is this expected for some reason? I guess what's happening is that the deadline timer is firing earlier than expected. From a few dozen to a few hundreds nanoseconds earlier. When this happens, hrtimer_interrupt() skips calling the hrtimer handler (since it's early) and the apic is programmed to fire in the next microsecond. On further research I saw that Nicolai tried to fix a very similar problem last year: commit 1a9e4c564ab174e53ed86def922804a5ddc63e7d Author: Nicolai Stange Date: Thu Jul 14 17:22:54 2016 +0200 x86/timers/apic: Fix imprecise timer interrupts by eliminating TSC clockevents frequency roundoff error I noticed the following bug/misbehavior on certain Intel systems: with a single task running on a NOHZ CPU on an Intel Haswell, I recognized that I did not only get the one expected local_timer APIC interrupt, but two per second at minimum. (!) Maybe this issue is still present? From 1583373016212069515@xxx Tue Nov 07 02:36:18 +0000 2017 X-GM-THRID: 1583363334504459776 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread