From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 93242 invoked by alias); 8 Feb 2020 23:43:28 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 93232 invoked by uid 89); 8 Feb 2020 23:43:28 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-7.4 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=H*f:sk:iw@mail, H*MI:sk:iw@mail, H*i:sk:iw@mail X-HELO: conssluserg-06.nifty.com Received: from conssluserg-06.nifty.com (HELO conssluserg-06.nifty.com) (210.131.2.91) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 08 Feb 2020 23:43:25 +0000 Received: from Express5800-S70 (ntsitm196171.sitm.nt.ngn.ppp.infoweb.ne.jp [125.0.207.171]) (authenticated) by conssluserg-06.nifty.com with ESMTP id 018NhAov002105 for ; Sun, 9 Feb 2020 08:43:10 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-06.nifty.com 018NhAov002105 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; s=dec2015msa; t=1581205390; bh=lcYfUAUohPMwJbu9MI+fR+7SCIL/HJYIqxRUO0Sfl94=; h=Date:From:To:Subject:In-Reply-To:References:From; b=U03BAfpw7WLulSQ2y7LY+rwOhdxGL4bRz6+DbmLpJ9e1ki8GhtszL+Q2r9uvPPSGn cbWuk8yFIg1nqXJf0B7eKDtvnqb24usDgI2moHypYBxHNNR427RwXa/XlVxNO5LJnZ mfN/07Fm19dR7O/HxUyjs4tUiu67PVrC00HwdrG4WaxgrfcXmJbBZ7nL/oLvfWAZaN L2sk+KaKcgsST0dvW95TfviEfJeZuXTXditF5L1QAiRbL+w0iiemvAIBANk+5a2KE3 dNUnBB1HcbmZTVKEVzv4xZ3ks2iNkPTMlR2ia+VeExgO1ngTL5goT0F7se8w1HqYO0 XdIldkeBNsPsA== Date: Sat, 08 Feb 2020 23:43:00 -0000 From: Takashi Yano To: cygwin@cygwin.com Subject: Re: Question on pseudo console and legacy console Message-Id: <20200209084312.c147adf68d9069d354b294c3@nifty.ne.jp> In-Reply-To: References: Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2020-02/txt/msg00071.txt.bz2 On Sat, 8 Feb 2020 22:50:56 +0800 Koichi Murase wrote: > I have a question on the pseudo console mode and the legacy console > mode. > > Question: > > Does it cause problems to set `disable_pcon' in the default value of > the environment variable `CYGWIN'? When is the pseudo console mode > recommended, and when can I use the legacy console mode? I noticed > that the terminal emulators with the pseudo console mode is quite > slower than with the legacy console mode, so I am thinking of > setting `disable_pcon' by default if it does not cause problem. Do you mean "without pseudo console support" by "legacy console mode"? If so, pty should behave as before 3.1.0 if you set disable_pcon, except that char code conversion, from code page which you set, to char code which is declared by locale, is still enabled. > Background: > > * There are large performance differences of terminal emulators > between the legacy and pseudo console modes. I show some test and > results in my laptop as follows: > > For example, one can measure a performance of the terminal emulators > by the following commands. It measures the processing time of the > terminal for 1M lines. > > $ yes | head -1000000 > yes.txt > $ time cat yes.txt > > The results with different terminals and different console modes > are summarized below: > > urxvt ... legacy: 0.410s, pcon: 33.517s (~ 80x slower) > (A) win ... legacy: 1.593s, pcon: 36.064s (~ 20x slower) > (B) x11 ... legacy: 1.573s, pcon: 35.611s (~ 20x slower) > (C) tty ... legacy: 1.614s, pcon: 35.129s (~ 20x slower) > mintty ... legacy: 3.811s, pcon: 39.406s (~ 10x slower) > xterm -j ... legacy: 39.809s, pcon: 1m2.237s (~ 1.5x slower) > > [ Note: `legacy' and `pcon' are the legacy and pseudo console > modes, respectively. (A)--(C) are three different modes of the > terminal that I wrote by myself and also I primarily use daily. > When xterm is tested, the option -j is passed to explicitly turn > off the smooth scrolling mode. ] > > This is the results for a specific computer, but the difference > between legacy and pseudo console modes is clear. I think the > reason why pseudo console is so slow is that it actually > internally processes terminal sequences and constructs its > terminal contents in backgrounds, which is completely redundant > process when the user uses terminal emulators. And the background > terminal is as slow as xterm, which is at least ten times slower > than the other terminal emulators. This seems to be too much than I expected... > * I understand that, with the pseudo console mode, the Cygwin console > have more powerful terminal features compared to the legacy console > mode. However, I do not usually use the console but another > terminal emulator. Also the default Cygwin Terminal (which can be > launched from the shortcut icon on desktop or in the start menu) is > actually Mintty, so I believe most other people also use terminal > emulators. > > Is there any reason to enable the pseudo console mode for all the > programs including those which does not use the console window? For > example, does the Cygwin PTY with the legacy console mode have some > limitation which is not present with the pseudo console mode? Or, > are there some problems caused by the legacy console mode? I > thought maybe some Windows Command-Line application (based on > Windows Console API) could have troubles with the legacy console > mode, but with a quick check for `cmd' and `PowerShell' it appears > to work in the terminal emulators with the legacy console mode > though I haven't tested it thoroughly. With out pseudo console, for example: 1) cmd.exe echos command twice. 2) dir /p does not work in cmd.exe. 3) Many of windows native console apps such as windows native gnuplot does not work at all. > * For these reasons, if there is no functional differences between the > pseudo console mode and the legacy console mode as far as I use > terminal emulators, I tend to think about setting `disable_pcon' as > the default value of the environment variable `CYGWIN'. But looking > at the discussion at > > https://cygwin.com/ml/cygwin-patches/2020-q1/threads.html#00060 > > it appears the setting `disable_pcon' is only introduced as a > workaround for the programs incompatible with the pseudo console > mode (such as `cgdb'), and the pseudo console mode is still > considered to be appropriate for normal programs. > > * If the console mode would not cause any differences when there is no > visible console window, would it make sense to change Cygwin's > behavior so that it switches to the pseudo console mode only when > the console window is present (if it is not too difficult > technically)? I am not sure what you mean "the console window is present", but that is possible if you accept the behaviour that the output of cygwin native apps disappears everytime when windows native app is executed. That is for example: Start mintty, then shell prompt displayed as: ---- [yano@Express5800-S70 ~]$ ---- Execute chcp 65001, the first shell prompt disappears. ---- Active code page: 65001 [yano@Express5800-S70 ~]$ ---- Execute ps. ---- Active code page: 65001 [yano@Express5800-S70 ~]$ ps PID PPID PGID WINPID TTY UID STIME COMMAND 1334 1330 1334 1052 pty0 197609 08:36:01 /usr/bin/ps 1329 1 1329 1524 ? 197609 08:33:25 /usr/bin/mintty 1330 1329 1330 13544 pty0 197609 08:33:25 /usr/bin/tcsh [yano@Express5800-S70 ~]$ ---- Execute chcp 65001 again, then shell prompt and result of ps disappears. ---- Active code page: 65001 Active code page: 65001 [yano@Express5800-S70 ~]$ ---- -- Takashi Yano -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple