From owner-freebsd-stable@FreeBSD.ORG Sat Sep 22 17:35:03 2007 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EA7C216A41A for ; Sat, 22 Sep 2007 17:35:03 +0000 (UTC) (envelope-from matrix@itlegion.ru) Received: from corpmail.itlegion.ru (corpmail.itlegion.ru [84.21.226.211]) by mx1.freebsd.org (Postfix) with SMTP id 27A8A13C4AC for ; Sat, 22 Sep 2007 17:35:02 +0000 (UTC) (envelope-from matrix@itlegion.ru) Received: (qmail 46139 invoked from network); 22 Sep 2007 21:35:01 +0400 Received: from unknown (HELO Artem) (192.168.0.12) by 84.21.226.211 with SMTP; 22 Sep 2007 21:35:01 +0400 X-AntiVirus: Checked by Dr.Web [version: 4.33, engine: 4.33.5.10110, virus records: 254163, updated: 22.09.2007] Message-ID: <01ae01c7fd3e$e6ff28f0$0c00a8c0@Artem> From: "Artem Kuchin" To: Date: Sat, 22 Sep 2007 21:34:58 +0400 Organization: IT Legion MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="koi8-r"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.3138 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3138 Subject: device polling and weird timer interrupt count from vmstat X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2007 17:35:04 -0000 I enabled device polling in the kernel, in nics and set HZ=1000. How, when i do omni2# vmstat -i i see interrupt total rate irq14: ata0 47 0 irq15: ata1 41 0 irq28: em0 2268 4 irq72: twe0 58380 120 cpu0: timer 965994 1995 cpu3: timer 1 0 cpu1: timer 1 0 cpu2: timer 965857 1995 Total 1992589 4116 (it is dual xeon with HT, HT disabled, that why cpu3 and cpu1 are zero). What i don't understand is why timer rate on each cpu is 1995? I have set it to 1000, not 1995 or 2000. I have seen it showing 2000 on another box. So 1) why not 1000? 2) if it is supposed to be doubled (why?) when why not 2000? 3) Is timer int really generated on each cpu? Am i really wasting cpu time on ~4000 ints per second? 4) does twe driver use polling? whay about twa? how to check it in the sources? -- Regards, Artem