From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933446AbeALBbH (ORCPT + 1 other); Thu, 11 Jan 2018 20:31:07 -0500 Received: from mail.kernel.org ([198.145.29.99]:41370 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932828AbeALBbC (ORCPT ); Thu, 11 Jan 2018 20:31:02 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9FE7221759 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=goodmis.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=rostedt@goodmis.org Date: Thu, 11 Jan 2018 20:30:57 -0500 From: Steven Rostedt To: Sergey Senozhatsky Cc: Petr Mladek , Tejun Heo , Sergey Senozhatsky , akpm@linux-foundation.org, linux-mm@kvack.org, Cong Wang , Dave Hansen , Johannes Weiner , Mel Gorman , Michal Hocko , Vlastimil Babka , Peter Zijlstra , Linus Torvalds , Jan Kara , Mathieu Desnoyers , Tetsuo Handa , rostedt@home.goodmis.org, Byungchul Park , Pavel Machek , linux-kernel@vger.kernel.org Subject: Re: [PATCH v5 0/2] printk: Console owner and waiter logic cleanup Message-ID: <20180111203057.5b1a8f8f@gandalf.local.home> In-Reply-To: <20180111112908.50de440a@vmware.local.home> References: <20180110132418.7080-1-pmladek@suse.com> <20180110140547.GZ3668920@devbig577.frc2.facebook.com> <20180110130517.6ff91716@vmware.local.home> <20180111045817.GA494@jagdpanzerIV> <20180111093435.GA24497@linux.suse> <20180111103845.GB477@jagdpanzerIV> <20180111112908.50de440a@vmware.local.home> X-Mailer: Claws Mail 3.14.0 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On Thu, 11 Jan 2018 11:29:08 -0500 Steven Rostedt wrote: > > claiming that for any given A, B, C the following is always true > > > > A * B < C > > > > where > > A is the amount of data to print in the worst case > > B the time call_console_drivers() needs to print a single > > char to all registered and enabled consoles > > C the watchdog's threshold > > > > is not really a step forward. > > It's no different than what we have, except that we currently have A > being infinite. My patch makes A no longer infinite, but a constant. > Yes that constant is mutable, but it's still a constant, and > controlled by the user. That to me is definitely a BIG step forward. I have to say that your analysis here really does point out the benefit of my patch. Today, printk() can print for a time of A * B, where, as you state above: A is the amount of data to print in the worst case B the time call_console_drivers() needs to print a single char to all registered and enabled consoles In the worse case, the current approach is A is infinite. That is, printk() never stops, as long as there is a printk happening on another CPU before B can finish. A will keep growing. The call to printk() will never return. The more CPUs you have, the more likely this will occur. All it takes is a few CPUs doing periodic printks. If there is a slow console, where the periodic printk on other CPUs occur quicker than the first can finish, the first one will be stuck forever. Doesn't take much to have this happen. With my patch, A is fixed to the size of the buffer. A single printk() can never print more than that. If another CPU comes in and does a printk, then it will take over the task of printing, and release the first printk. -- Steve