[OpenIndiana-discuss] How to get a usable console on OI?
Chris
oidev at bsdos.info
Tue Jan 26 00:49:59 UTC 2021
On 2021-01-25 15:36, Joshua M. Clulow wrote:
> On Mon, 25 Jan 2021 at 11:52, Chris <oidev at bsdos.info> wrote:
>> On 2021-01-24 23:10, Joshua M. Clulow via openindiana-discuss wrote:
>> > # dtrace -x stackframes=100 -n '
>> > profile-997 /arg0/ { @[stack()] = count(); }
>> > tick-60s { exit(0); }' -o out.kern_stacks
>> >
>> OK I simply created an sh script (DTTRACE) with the contents above and
>> fired it off as; sudo ./DTRACE &
>> followed by; ls -Cla /usr/include
>> which created: out.kern_stacks (attached).
>>
>> > That will capture the stack of what's running in the kernel (if the
>> > kernel is running at the time) on each CPU, 997 times per second, for
>> > 60 seconds. While that's running, kick off the "time ls" again. Take
>> > the "out.kern_stacks" file and pass it through the flame graph
>> > generator; e.g., something like:
>> >
>> > $ ./stackcollapse.pl out.kern_stacks | ./flamegraph.pl > output.svg
>> The results of the above are attached as: out_kern_stacks.svg
>> I has somehow expected a longer spike on the graph, as the output of
>> ls -Cla /usr/include took the same ~20 seconds to finish writing to the
>> screen as before.
>
> That's great! Thank you.
>
> I expected a bit more as well, but I think I can see what's happening.
> It looks like the "nvidia" driver is closed source and built in a way
> that doesn't correctly maintain the frame pointer so DTrace is not
> able to walk up the stack past that point. On a machine that isn't
> using the nvidia driver, it looks more like...
>
> gfx_private`bitmap_cons_display()
> gfx_private`do_gfx_ioctl+0x272
> gfx_private`gfxp_fb_ioctl+0x63
> vgatext`vgatext_ioctl+0xc0
> genunix`cdev_ioctl+0x2b
> genunix`ldi_ioctl+0x89
> tem`tems_display_layered+0x37
> tem`tems_safe_display+0x2d
> tem`tem_safe_pix_cls_range+0x152
> tem`tem_safe_pix_cls+0x4d
> tem`tem_safe_clear_chars+0xb0
> tem`tem_safe_scroll+0xdc
> tem`tem_safe_lf+0xbd
> tem`tem_safe_control+0x18d
> tem`tem_safe_parse+0x53
> tem`tem_safe_input_byte+0x109
> tem`tem_safe_terminal_emulate+0x84
> tem`tem_write+0x73
> wc`wcuwsrv+0xc7
> genunix`runservice+0x49
> genunix`queue_service+0x41
>
> It looks like one would only get to bitmap_cons_display() by making a
> VIS_CONSDISPLAY ioctl(), perhaps via tems_display_layered(). This
> routine ends up copying memory around, basically. That it's doing it
> 100% of the time on one CPU seems like the obvious bottleneck here.
> It'd be good to know, perhaps, at what _rate_ calls to
> bitmap_cons_display() are being made. You could try something like:
>
> dtrace -q -n '
> bitmap_cons_display:return { @ = count(); }
> tick-1s { printf("%Y ", walltimestamp); printa("%@d", @);
> printf("\n"); trunc(@); }'
>
> I ran that on my system, and then did "echo a >/dev/wscons"
> simultaneously and was able to count 91 firings...
>
> 2021 Jan 25 15:28:46
> 2021 Jan 25 15:28:47
> 2021 Jan 25 15:28:48 91
> 2021 Jan 25 15:28:49
> ...
>
> Another thing that would be interesting to know is: if you disable the
> nvidia driver completely, is performance better? Because you're not
> currently using X11, I don't believe you technically need it. I think
> you could try, at the boot loader, hitting escape to get to the "ok"
> prompt and then...
>
> set disable-nvidia=true
> boot
Hmm according to loader.conf nvidia_load="NO" should have accomplished
the same. But did not.
>
> It should hopefully then give you a WARNING about the "nvidia" module
> being disabled at boot. Hopefully performance is at least different,
> if not better, if you do that.
However...
set disable-nvidia=true
boot
DID disable loading of the Nvidia driver. Sadly, there was no perceptible
change in screen draws. :-(
I'll give a shot at your above suggestion, and report back.
Thank you very much for all your advice, Joshua! :-)
OH one last thing; isn't there a so-called "graphics" mode one can
initiate for the console, via the cards graphics driver (nvidia)?
>
>
> Cheers.
--Chris
--
~10yrs a FreeBSD maintainer of ~160 ports
~40yrs of UNIX
More information about the openindiana-discuss
mailing list