Ubuntu 16.04 LiveCD Memory Usage Compared

The latest Ubuntu LTS is out, so it’s time for an updated memory usage comparison.


Boots means it will boot to a desktop that you can move the mouse on and is fully loaded.  While Browser and Smooth means we can load my website in a reasonable amount of time.


Lubuntu is super efficient

Lubuntu is amazing in how much less memory it can boot in.  I believe it is still the only one with ZRam enabled by default, which certainly helps a bit.

I actually did the memory usage for ZRam to the nearest MB for fun.
The 32 bit version boots in 224 MB, and is smooth with Firefox at only 240MB!   The 64 bit boots at only 25 MB more (251), but is needs 384 MB to be smooth.

If you are memory limited, change flavors first, 32-bit won’t help that much

Looking just at “Browser and Smooth” because that’s a more clear use-case.  There is no significant memory  difference between the 32 and 64 bit varients of: Xubuntu,  Ubuntu Gnome, Ubuntu (Unity).

Lubuntu, Kubuntu, and Ubuntu Mate do have significant deltas, which let’s explore:
Kubuntu – If you are worried about memory requirements do not use.
Ubuntu Mate – It’s at most a 128MB loss, likely less.  (We did that to 128MB accuracy).
Lubuntu 64 bit is smooth at 384MB.  32 bit saves almost 144 MB!  If you are severally memory limited 32-bit Lubuntu becomes your only choice.

Hard Memory Limit
The 32-bit hard memory requirement is 224 MB. (Below that is panics)
The 64-bit hard memory requirement is 251 MB.  Both of these were tested with Lubuntu.

Check out the 14.04 Post.   I used Virt-Manager/KVM instead of Virtualbox for the 16.04 test.

Extras: Testing NotesSpreadsheet

Debug performance issues with strace

Have you ever been asked why is this program running so slowly?  Or why does it take 15 seconds to startup?

Strace might be the tool for you.  It’s a system call tracer which let’s you see what this program is requesting from the system. For example, if you run ls to a directory some key thins will be:
getdents(3, /* 47 entries */, 32768)    = 1928  (Get entries from a directory)
write(1, ..   (write out to stdout the output of ls)

You can add timing information to get more of an idea of what’s happening, I usually add:
-tt  (print absolute timestamps in usecs, very useful for comparing to nmap output for instance)
-T  (print time in each syscall)
-ff (follow forks, if it spawns other processes this will you separate them out to different files)

So run it all `strace -tt -T -ff ls’ and now it looks like:
14:09:10.747357 getdents(3, /* 48 entries */, 32768) = 1952 <0.000056>
14:09:10.747724 write(1, .....) = 57 <0.000031

Absolute time  syscall 

When using this on anything non-trivial, I suggest exporting it to a file (-o file).  You can also try analyzing it live as the long delays should cause strace output to stop.

I’ve got the strace output, it’s huge!  Now what?

Let’s start at the first one, which will be the lowest number, output_name.10001 for example. Check the time stamp at the top and the bottom, does it cover the time frame where you are investigating?  If so, dig in and find where the jump in time was.

In this example it was:
09:13:32.329980 write(1, "[2]... ", 7)  = 7 <0.000033>
09:13:32.330041 wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 4}], 0, NULL) = 14963 <4512.975521>
10:28:45.305644 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=14963, si_status=4, si_utime=0, si_stime=0} ---
10:28:45.305907 write(1, "[1]... ", 7)  = 7 <0.000036>

Or in other words, it’s really in that child process 14963 so let’s open up output_name.14963
Scroll throw to the first jump in time and we see:
09:13:20.418886 connect(5, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("")}, 16) = -1 ETIMEDOUT (Connection timed out) <127.317319>
... about 30 lines...
09:15:28.738327 connect(5, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("")}, 16) = -1 ETIMEDOUT (Connection timed out) <127.253925>
... many more lines here ...
10:26:37.977564 connect(5, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("")}, 16) = -1 ETIMEDOUT (Connection timed out) <127.326639>

So it’s timing out trying to connect to an IP address and then trying again over 10 times.  Using strace will help you the most when the wait is caused by something on the system level (disk, networking, etc).

Help people move to L/Ubuntu from Windows XP!

In preparation for the Cherry Hill Library’s XP to Linux Installfest I made a website, presentation and worksheet.

Basic site designed to tell users if they are still getting security updates (right now just for Windows) and what their next actions should be.

Introduces Ubuntu and Lubuntu for non-technical users and also how today’s installfest will work.

A place for the user to write down what they use their computer for.   And a place for the installfest helpers to write down what works/doesn’t in the LiveCD test.

Items mentioned in the worksheet: The liability release is specific to this Installfest.   As for the survey mentioned, I’m very curious just how many non-pae machines or 32 x86 machines there are still in the wild.

Let me know what you think and feel free to modify/use/whatever.  (If you need a license consider the docs under Creative Commons Attribution 4.0 International License).

DuckDuckGo, Now in Ubuntu 12.10!

I’m pleased to say that DuckDuckGo is now included as a search engine option in Firefox in the latest Ubuntu 12.10 release.  DuckDuckGo and Twitter are the only search engines that are secure by default via HTTPS.

As a brief comparison I searched for pidgin in the Unity Dash, Google, and DuckDuckGo.  Which results do you like better?

Starting with Google and Unity Dash:

And Now for DuckDuckGo!

DuckDuckGo separates your search term into different uses, letting you further refine your search results or get instant answers from Wikipedia, dictionaries and many more sources.

DuckDuckGo doesn’t track you or bubble you (customize your search so you rarely will be shown another point of view).  They also are partially open source and made it a goal to give back 10% of gross revenue to open source projects.

For a better overview of DuckDuckGo check out their about page, the introductory video is really nice.   This is just the start of a relationship between DuckDuckGo and Canonical, in fact they haven’t even signed a contract yet.  Hopefully the relationship grows and enhances both projects.

Duck it!

Browsers and how I think they should show Trust and Encyption

A follow up from my previous post;

Firefox 12 Currently

…has something like this to show trust and encryption (the colors are off but hopefully you get the idea, the actual blue and green are much nicer on the eyes):
[V] The Vanguard Group Inc, (US)   https://personal.vanguard.com/us/CorporatePortal

[d]duckduckgo.com   https://duckduckgo.com/?q=cheese

[g]google.com   https://encrypted.google.com

[/.] slashdot.org

My proposal:

[V] The Vanguard Group Inc. (US)    personal.vanguard.com   /us/CorporatePortal

[d] duckduckgo.com   /?q=cheese

[g] encrypted.google.com

[/.] slashdot.org

I’m curious if you can figure out what everything means in my proposal without explanation.


  • Green is for trust and only for trust.  Notice how the favicon is only colored at all when using Extended Validation.  AFAIK it should never be a domain name.
  • Blue is for encrypted and only for encrypted, and only used for the sub+domain name.  I’m hoping this will provide a non-color cue for those who are colorblind, to differentiate between the two.
  • I got rid of the greying out of text and moved to a bolding of the domain name, this helped due to my bad green/blue colors but might not be necessary in the real version
  • Spacing between the domain name and the rest of the url to help keep them even more separate in a quick glance
  • Oh, and the complete lack of https/http, I would want to see Opera’s awesome feature implemented where they hide them unless you click on the URL bar.

My overall goal was to try to communicate both a level of trust and a level of encryption, while making it easy at a glance.  In addition, giving us the option in the future to really separate these two concepts.

Looking for suggestions, comments, and feedback before I try to propose it to Mozilla.  Check out my previous blog post for what they are actually planning to do for Firefox 14.