Usage

Easily diagnose and fix common performance and resource issues.

Designers

WilliamJonMcCann, AllanDay

Objectives

Goals

  • Enable users to diagnose and resolve common performance/capacity issues
    • Runaway apps hogging CPU, memory, disk I/O, bandwidth
    • Full disks, including root/home partitions
    • Battery running out too quickly
  • Allow users to understand what is going on with the system
  • Allow the user to forcefully close applications
  • Disk usage:
    • Show the total amount of disk space, plus available/remaining
    • Help the user to find out what's using disk space
    • Allow clearing some things
    • Highlight things that are easy to clear (trash, browser cache, etc)
    • Cater to multiuser scenarios

Non Goals

  • Not a development tool
  • Disk usage:
    • Not a generic "analyzer" program
    • Don't show stuff the user can't do anything about, like operating system files
    • No need to show filesystem locations that are normally hidden to the user

Use cases

  • Watching a film but it keeps pausing.
    • Indicate if there's another app consuming network bandwidth.
  • Why is my computer slow?
    • Indicate if there's a CPU/memory issue
  • I got a warning that I'm almost out of disk space.
    • Allow the user to find out what's using space and allow them to free it up.
  • My battery is running out really quickly!

Relevant Art

Windows 8 Task Manager

https://www.windowscentral.com/sites/wpcentral.com/files/styles/xlarge/public/field/image/2015/09/processes-cpu-sort.PNG?itok=XbxQ6JuW

http://thewindowsclub.thewindowsclubco.netdna-cdn.com/wp-content/uploads/2011/10/clip_image010.jpg

https://cds.technorms.com/assets/10-app-history.png

Resources about the Windows 8 task manager:

Baobab

https://wiki.gnome.org/Apps/Baobab?action=AttachFile&do=get&target=screenshot.png

DaisyDisk

https://images.techhive.com/images/article/2015/10/daisydisk-4-collector-100623326-large970.idge.png

DaisyDisk has a feature where you can collect files and folders that you want to delete, and it will add up the combined space they take up before you clear them.

Android

Battery

https://forums.androidcentral.com/attachments/google-pixel-pixel-xl/266549d1503879432t-battery-life-after-oreo-7672.jpg

Storage

https://cnet4.cbsistatic.com/img/928x2y8Lq31E3-0iV9QD480QCE0=/fit-in/x/2017/08/30/0c66bcfd-64af-43cb-95b0-405cfb2020b6/android-oreo-storage-saver.jpg

"Free up space" opens the "choose items to remove" view, which lists things that are easy to clear out - backed up photos & videos, downloads, infrequently used apps.

iOS

https://i.amz.mshcdn.com/yMwJeOtIIy-ZK-FQoSZsj_6_u_4=/fit-in/1200x9600/http://mashable.com/wp-content/uploads/2014/09/iOS-8-Battery-Usage.jpg

OS X

https://support.apple.com/library/content/dam/edam/applecare/images/en_US/osx/yosemite-activity_monitor-cpu.png

os-x-storage.png

Deepin

https://www.deepin.org/wp-content/uploads/2017/06/deepin-system-monitor_en-2.png

Technical notes

CPU

Single process applications/activities will encounter limits for the core on which they are running. It is therefore probably worth indicating when single cores have reached capacity.

At the same time, activities that are parallelised could saturate all the cores. Processes are also moved between cores to make the most of the total available CPU capacity. In that sense there *is* a single combined resource. While it is not used evenly, it can run out in certain situations.

At the moment we don't protect certain processes, like the shell, so the system can be affected by heavy CPU usage by apps.

Memory

Memory management is fairly crude on Linux at the moment:

  • If a process tries to claim memory that isn't available, the kernel will just kill it.
  • If you run out of RAM your machine will start swapping, but that's often very slow, so the whole system starts to lag.

Generally speaking if you've used 100% of your memory and your computer is slow, it's a memory issue and you need to free some up. However, it's worth noting that RAM is used for cache which will be reallocated if needed by a process - so this usage either needs to be ignored or differentiated in some way.

Disk I/O

Disk read/write isn't parallelizable, so processes have to compete for it. A single process can hog the disk. Examples: indexing lots of data, downloading a large file.

Spinning disks also have the seek time issue - the time it takes to move to the correct position - which gets worse with data fragmentation. They also have to be spun up if they aren't already rotating.

Network

Not all users will have a good understanding of network bandwidth - they might not realise that some activities/apps use a lot of bandwidth.

Network issues are also related to the available bandwidth of course. Would it be possible to indicate the total amount of bandwidth being used, and whether this is relatively high/low?

Power

Power usage is related to CPU usage - if an app is using a lot of CPU it is also burning through your battery.

Discussion

Need to consider certain locales and deployments where hardware limitations are likely to be encountered (eg. poor quality hardware in hot/humid conditions).

How are users supposed to know that Usage exists? Is it possible to notify them when issues are detected for CPU/memory/etc, in the same way that we do for disk space?

Right now resource usage is only recorded while Usage is running. More historical data would be useful for power, network, etc

Tentative Design

Performance

https://raw.githubusercontent.com/gnome-design-team/gnome-mockups/master/usage/usage-performance.png

Storage

https://raw.githubusercontent.com/gnome-design-team/gnome-mockups/master/usage/usage-storage.png

Comments

  • I have created an alternative design proposal with some details on the decisions, available for comments - RobertRoth

  • I think the "Disk space used/available by type of data" goal should also make it easier for people to solve disk space problems. That might be emptying the thumbnail, browser, etc. caches, or finding duplicate files (fdupes is a command-line tool that I use often for that case, but which could do with a GUI equivalent) (-- BastienNocera 2013-11-18 13:41:50)

See Also

Design/Apps/Usage (last edited 2017-11-01 09:25:09 by AllanDay)