[OpenIndiana-discuss] How to get a usable console on OI?
Chris
oidev at bsdos.info
Mon Jan 25 20:09:01 UTC 2021
On 2021-01-25 11:52, Chris wrote:
> On 2021-01-24 23:10, Joshua M. Clulow via openindiana-discuss wrote:
>> On Sun, 24 Jan 2021 at 21:13, Chris <oidev at bsdos.info> wrote:
>>> On 2021-01-24 18:53, Chris wrote:
>>> > On 2021-01-24 17:48, Joshua M. Clulow via openindiana-discuss wrote:
>>> >> On Sun, 24 Jan 2021 at 17:27, Chris <oidev at bsdos.info> wrote:
>>> > All the reports I've seen thus far, indicate 800x600.
>>> > You're suggestion confirms it:
>>> > ts_p_dimension = {
>>> > ts_p_dimension.width = 0t800
>>> > ts_p_dimension.height = 0t600
>>> > }
>>> > ts_pdepth = 0t32
>>
>> Based on that, I don't imagine trying to drop the resolution is really
>> going to help.
>>
>>> > I'm booting via BIOS. While the CPU may be involved. I would have
>>> > imagined that the cycles would be on the GPU. Which should be more than
>>> > adequate to run high frame rates.
>>
>> With the current framebuffer console code we have, I believe we
>> basically map a region of the video RAM into the host physical address
>> space. The terminal emulator in the kernel which runs on the CPU just
>> copies pixels (bytes, really) from the region in memory where we store
>> the font into the right place in the mapped region to make it all show
>> up on the screen. I don't believe the GPU is really being used for
>> anything, at least directly.
>>
>> Does this system support UEFI booting as well? It may help to get the
>> entire contents of the "tems" object to get us more detail about
>> exactly how the console is set up; e.g.,
>>
>> # mdb -ke 'tems::print -d'
> Attached as mdb-ke
>
>>
>>> > Thank you *very* much for taking the time to reply!
>>
>> You are most welcome!
>>
>>> > I'll dump some mpstat data to file, and see what (if anything) pops up,
>>> > and report what it contains.
>>
>> I have taken a look at your mpstat output, and it does indeed seem
>> like between ~09:02:23PM and ~09:02:44PM (a period of around 20
>> seconds) one CPU was spending 100% of its time executing kernel code
>> (the "sys" column). This matches up with the ~20 seconds of sys time
>> (the 23.223s) in the output of "time ls" you also posted.
>>
>> As it seems this is pretty reproducible, the next thing I would do is
>> figure out what we're doing in the kernel for that 20 seconds. You'll
>> want to use DTrace to capture kernel stacks; e.g.,
>>
>> # 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.
OK the list stripped the flamegraph file attached. So I'm attaching it as:
out_kern_stacks_svg.txt
in hopes it makes it through.
HTH
Thanks again! :-)
--Chris
>
> Thank you very much all your helpful advice!
>
> --Chris
>>
>> You can open "output.svg" in a web browser and inspect the aggregated
>> view of all the stacks. It'll probably be small enough to attach to
>> an e-mail here.
>>
>> Note, the perl scripts above, and more detailed instructions, are all
>> up on GitHub:
>>
>> https://github.com/brendangregg/FlameGraph#dtrace
>>
>>
>> Cheers.
>
--
~10yrs a FreeBSD maintainer of ~160 ports
~40yrs of UNIX
More information about the openindiana-discuss
mailing list