Re: Reducing SIGINFO verbosity

From: Warner Losh <imp_at_bsdimp.com>
Date: Fri, 21 May 2021 00:41:33 UTC
On Thu, May 20, 2021, 6:28 PM Michael Gmelin <freebsd@grem.de> wrote:

>
>
> On 21. May 2021, at 01:00, Conrad Meyer <cem@freebsd.org> wrote:
>
> 
> No, I don’t think there’s any reason to default it differently on stable
> vs current. I think it’s useful (and I prefer the more verbose form, which
> isn’t the default).
>
> Conrad
>
>
> Well, to me siginfo is part of the user interface and changing the user
> interface to show lots of debug information by default feels wrong
> (especially on a 80x25 terminal, where it now takes multiple lines). A
> typical example is hitting ctrl-t a couple of times to see the progress in
> a long running dd operation, all the extra clutter makes this unnecessarily
> inconvenient. Maybe your use case differs, I don’t need to see system call
> details when checking the poudriere build status.
>
> In the end, personally this simply means that there is one more thing I
> have to configure on every host in the future, I don’t really have the
> energy to fight over this.
>
> It would be nice if changing defaults of things that were the same for
> decades would be mentioned somewhere in the release notes though. Or maybe
> in the verbose output itself? Just an idea, how this could be done in a
> user friendly way:
>
> Right now we have
> 0 - normal
> 1 - verbose
> 2 - very verbose
>
> What about adding a bit here that controls an extra line saying:
>
> "You can control the verbosity of siginfo output with sysctl
> kern.tty_info_kstacks"
>
> Therefore, we would have these additional values, one of them being the
> default value:
>
> 16 - normal + sysctl help message
> 17 - verbose + sysctl help message
> 18 - very verbose + sysctl message
>
> At this point the default won’t matter that much, as users learn about the
> feature after the update and can easily configure the setting that suits
> their needs.
>
> Just trying to be somehow constructive here, having this on by default
> still doesn’t feel right to me.
>

If this were a tunable, I think cem's default is good. We'll be able to get
more data than otherwise. Since the sysctl is writable, people can mostly
get the extra info by logging in elsewhere and setting it.

Part of me wants to have a toggle. Hit it 3 times in a second and we'd
toggle verbosity. But then we'd want to turn it off for security, so I'm
not so sure the complexity is worth it..

Warner


Michael
>
>
> On Thu, May 20, 2021 at 11:59 John-Mark Gurney <jmg@funkthat.com> wrote:
>
>> Michael Gmelin wrote this message on Thu, May 20, 2021 at 18:01 +0200:
>> > I'm leaving this here, mostly so that others (or future me) can google
>> > it up.
>> >
>> > Traditionally, CTRL-t would give a one-line output + whatever the
>> > process specific signal handler comes up with:
>> >
>> >   # sleep 120 <--- hits CTRL-t
>> >   load: 0.27  cmd: sleep 38162 [nanslp] 0.64r 0.00u 0.00s 0% 1780k
>> >   sleep: about 119 second(s) left out of the original 120
>> >
>> >   # cat <--- hits CTRL-t
>> >   load: 0.02  cmd: cat 24379 [ttyin] 0.63r 0.00u 0.00s 0% 2308k
>> >
>> >
>> > On 13 I get:
>> >
>> >   # sleep 120 <--- hits CTRL-t
>> >   load: 0.12  cmd: sleep 3241 [nanslp] 0.52r 0.00u 0.00s 0% 2172k
>> >   mi_switch+0xc1 sleepq_catch_signals+0x2e6 sleepq_timedwait_sig+0x12
>> >   _sleep+0x199 kern_clock_nanosleep+0x1e1 sys_nanosleep+0x3b
>> >   amd64_syscall+0x10c fast_syscall_common+0xf8 sleep: about 119
>> >   second(s) left out of the original 120
>> >
>> >   # cat <--- hits CTRL-t
>> >   load: 0.09  cmd: cat 3240 [ttyin] 0.23r 0.00u 0.00s 0% 2300k
>> >   mi_switch+0xc1 sleepq_catch_signals+0x2e6 sleepq_wait_sig+0x9
>> >   _cv_wait_sig+0xe4 tty_wait+0x1c ttydisc_read+0x2ac ttydev_read+0x56
>> >   devfs_read_f+0xd5 dofileread+0x81 sys_read+0xbc amd64_syscall+0x10c
>> >   fast_syscall_common+0xf8
>> >
>> > which is quite way too verbose when checking the progress of
>> > long-running processes, like cp, dd, or poudriere. Especially as CTRL-t
>> > is part of the user experience to me - I use it to interact with the
>> > machine outside of debugging software issues.
>> >
>> > Setting
>> >
>> >   sysctl kern.tty_info_kstacks=0
>> >   echo kern.tty_info_kstacks=0 >>/etc/sysctl.conf
>> >
>> > fixes this permanently.
>> >
>> > Apparently, this was enabled by default on purpose[0], so that people
>> > find the feature (which certainly worked ^_^), but I think it would
>> > been worth mentioning the sysctl somewhere in the release notes/errata,
>> > so that people understand how to disable it again.
>>
>> I think the original intent was to disable this on -stable or at least
>> -RELEASEs, but it looks like this didn't happen.  This is VERY helpful
>> for a developer, but not as helpful for most users.
>>
>> Conrad,
>>
>> Should this be disabled on -stable now?
>>
>> --
>>   John-Mark Gurney                              Voice: +1 415 225 5579
>>
>>      "All that I will do, has been done, All that I have, has not."
>>
>