Em Mon, Jun 08, 2015 at 02:08:06PM -0500, Guy Streeter escreveu:
I've been thinking about 3 separate issues regarding the tuna GUI, and I
have some proposals to address them. I'll list each one separately.
1. The CPU view doesn't scale well to really large numbers of CPUs. Modern
server systems have 64 or more processing units. It would be good to be able
to refer to CPU as sets such as NUMA nodes, sockets, shared cache, or
distance groups. This would help us move applications or IRQs to specific
sets of CPUs.
I'm working on an example design that would move the CPU view to a pop-up
window and display CPUs in a topological view. There would be an overview of
the current CPU selection in the header bar of the main window, and that
would be a drop target for dragged IRQs or processes.
The popup window could also display which CPUs are available to which PCI
devices. This can be helpful on NUMA systems for instance.
How to do this properly is a challenge, i think, but I agree that this
needs improvement to cope with the ever increasing number of cores. A
vision that reflects the grouping done at the hardware level looks like
a sensible first approach.
Thing is, this is how it is now, so probably what we need is to make it
more compact, right? I.e. remove, in the default, first level view, the
per cpu information, leaving just the per CPU socket stuff.
So, agreed that clicking on a socket would expand info about it, etc.
Agreed that, in the same vein, making the per irq info more compact is
interesting as well, i.e. show just the IRQs that have in its affinity
mask CPUs that are in the CPU Socket being expanded/selected.
Ditto for the threads, right?
2. The tuna GUI ought to be in an RPM package that
"Requires" the necessary
graphics packages. Right now, it just suggests on the commandline what you
might need to install to get it to work. This is a silent failure when tuna
is invoked as a desktop app.
I suggest we break the GUI into a separate program in a separate RPM
package. The tuna command-line program can exec the GUI when it is invoked
without arguments. The tuna GUI RPM can specify the appropriate package
requirements so it can run successfully.
I think that is a good idea, we can have a tuna-gui, or make 'tuna' be
the one for the gui while 'tuna-cmdline' would be just the command line
utility, what we call 'tuna' today.
I.e. the expectation, I think, is that when installing 'tuna', one has
the gui available, something that, as you described above, has been a
source of confusion so far.
3. Tuna now only runs as root. This was implemented because the
management section failed fatally when access permissions failed. Some of
this has been resolved, but the profile tabs are not useful and look
incomplete when the GUI is run without proper privileges.
I suggest we break out the profile handling into its own program also. We
can make it use PolicyKit and require root access to run. The main tuna GUI
can have a button to launch the profile GUI program. The tuna command-line
can have an option to launch the profile application as well.
When run without privileges, the main tuna GUI could pop up a notification
that some operations make fail, and offer to re-launch through PolicyKit to
obtain root privilege. We should also verify that every failed operation in
the GUI is properly reported, so a non-root user would know their attempted
adjustments did not take place.
Right, agreed, no need to prevent a user from running it just because
one of the things that can be done with it requires more priviledges.
That's it. Let me know if you have questions about my proposals, and also if
you have other suggested solutions or other enhancements we might consider.