From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752389AbcAESjo (ORCPT ); Tue, 5 Jan 2016 13:39:44 -0500 Received: from mail-ig0-f175.google.com ([209.85.213.175]:35442 "EHLO mail-ig0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751498AbcAESjk (ORCPT ); Tue, 5 Jan 2016 13:39:40 -0500 Subject: Re: [PATCH] Add possibility to set /dev/tty number To: Greg KH References: <20160104154305.GA24533@kroah.com> <568AA47D.6010604@gmail.com> <20160104171121.GA25961@kroah.com> <568ABCBD.3070909@gmail.com> Cc: Pierre Paul MINGOT , jslaby@suse.cz, linux-kernel@vger.kernel.org From: "Austin S. Hemmelgarn" Message-ID: <568C0DB5.8070200@gmail.com> Date: Tue, 5 Jan 2016 13:38:45 -0500 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: <568ABCBD.3070909@gmail.com> Content-Type: multipart/mixed; boundary="------------060103070306000107000906" X-Antivirus: avast! (VPS 160105-0, 2016-01-05), Outbound message X-Antivirus-Status: Clean Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------060103070306000107000906 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit On 2016-01-04 13:41, Austin S. Hemmelgarn wrote: > On 2016-01-04 12:11, Greg KH wrote: >> Please provide some "real" numbers of memory savings please before >> saying that this change really does save memory. Just guessing isn't >> ok. > I can probably put something together to actually test this, but it will > take a while (most of my testing scripts and VM's are targeted at > regression testing of filesystems, not memory profiling of virtual > device drivers). I doubt that it will work out to any more than 16k size > difference, but that's still a few more pages (on most systems) that > could be used for other things. As promised, I've got numbers regarding the memory impact. The system used for testing was a para-virtualized Xen domain running a Linux kernel built from these sources: git://github.com/Ferroin/linux.git using the attached base config. The domain used for testing was given 4096 MB or RAM, 4 VCPUS, a PV NIC, 2 PV disks, and had migration restrictions disabled (nomigrate=1 in the domain configuration file). I tested stock sources with the VT subsystem enabled, stock sources with the VT subsystem disabled, and locally modified sources with MAX_NR_CONSOLES and MAX_USER_NR_CONSOLES manually changed to 31. The testing involved booting each configuration 8 times, and comparing the MemTotal line form /proc/meminfo. None of the tests included any userspace initialization of the VT's. Results were 100% stable across each reboot for a given configuration. Having the full VT subsystem built in, MemTotal showed 4097176 Kb of RAM. The manually modified version with half the number of VT's showed 4097228 Kb or RAM. With the entire VT subsystem compiled out, MemTotal was 4097304 Kb. This means that not including the VT subsystem resulted in a 128k reduction in runtime footprint, and having only half the number of VT's resulted in a 52k reduction. Assuming a linear correlation between the number of VT's and the runtime footprint of the subsystem, that means the subsystem itself incurs 26k of overhead, and each VT incurs approximately 1.6k of overhead. --------------060103070306000107000906 Content-Type: application/gzip; name="config.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 lwJN4MSD54CAkgDQlKDZjr4AAA== --------------060103070306000107000906--