Che bel piacere… Che bel piacere…

Ieri ho visto la pubblicita` di questo coso.

C’e` questa bambina che pulisce, superfelice, (<<che bel piacere… che bel piacere..>> e` la canzoncina che canta!) il sudicio finto incluso nella confezione. Poi ad un tratto esclama, ancora piu` felice:¬†<<E` come quello della mamma!!>>.

Poi arriva anche la mamma, che si complimenta con lei. Finisce con la bambina che continua ad aspirare, e la mamma, seduta, la osserva. L’immagine e` (volutamente) sfuocata, ma si percepisce il di lei sguardo languido –forse quasi anche le lacrime– immaginando gia` quando la bambina crescera`, e potra` finalmente pulire del sudicio vero, con un aspirapolvere vero! Del resto, che cosa si potrebbe volere di piu` per propria figlia?!?!

Dobbiamo ammettere, pero`, che le cose sono migliorate molto, rispetto a qualche anno fa. Voglio dire… Secondo me, qualche anno fa, avrebbero incluso anche il babbo che torna a casa con le scarpe fangose. Si sarebbe certo complimentato anche lui con la “donnina di casa”, per poi, chesso`, schiantarsi in poltrona, e chiede pantofole e birra. E invece, almeno questo non c’e`… E son conquiste!!

PS. Quando e` partita la pubblicita`, stavo pulendo la cucina. Mi son fermato e sono andato in soggiorno a vederla. Una volta finita son tornato in cucina, ho ricominciato a pulire e, nel mentre, ho chiamato Lara, e le ho chiesto come le era sembrata quella pubblicita`. Lei ha risposto che non le piaceva perche` faceva sembrare che solo le donne fanno le pulizie.

Della serie… uno ci prova. E speriamo bene :-O

PPS. Va dato credito, se non a GrandiGiochi, quantomeno alla VORWERK (quelli del “folletto vero”) che, ad esempio, in questa pagina, in cui spiegano come divertirsi facendo le faccende coi bambini, ci sono un uomo e un bambino maschio che spazzano. ūüôā

Posted in General | Tagged , , , , , , | Leave a comment

Speeding-up colored builds… on openSUSE Tumbleweed

More than a blog entry, this is a¬†“let’s store what I did somewhere, so I don’t forget”.

Even better, if would be to put some automation together, I know that very well. ūüôā
I plan to do that, actually, but I’m not there yet.

So, basically, I want compile-time warnings and errors to be clearly visible and easy to spot –while logs are flowing in a terminal– and I want to speed-up builds themselves. The tools for the job are, apparently:

I had this setup already a couple of development boxes ago, but had not put it together on the current one (running openSUSE Tumbleweed), yet.


colorgcc, is here:

Just download it, and:

$ sudo zypper install colorgcc-1.4.4-1.12.noarch.rpm


$ cp /etc/colorgccrc $HOME/.colorgccrc

And, in that config file, do what the comment that says to uncomment says, i.e., uncomment the lines following the comment: ūüôā

# Uncomment this if you want set up default path to gcc
#g++: /usr/bin/g++
#gcc: /usr/bin/gcc
#c++: /usr/bin/c++
#cc: /usr/bin/cc

And, finally, symlinks. Basically, we want the colorgcc wrapper script to be invoked, instead of one (any) of the GCC compilers. I’ve done it by creating these links in $HOME/bin/, and making sure $HOME/bin is in $PATH (and comes early enough):

$ ls -l /home/dario/bin/
c++ -> /usr/bin/colorgcc
c89-gcc -> /usr/bin/colorgcc
c99-gcc -> /usr/bin/colorgcc
cc -> /usr/bin/colorgcc
g++ -> /usr/bin/colorgcc
g++-7 -> /usr/bin/colorgcc
gcc -> /usr/bin/colorgcc
gcc-7 -> /usr/bin/colorgcc
gcc-8 -> /usr/bin/colorgcc
gccgo -> /usr/bin/colorgcc
gccgo-8 -> /usr/bin/colorgcc
$ echo $PATH

As a test, let’s just give gcc something to complain about. For me, it worked (do you see the colors?!?):

$ cat << EOF > hello.c ; gcc hello.c -o hello

printf("Hello World!\n");
hello.c:3:1: warning: return type defaults to ‚Äėint‚Äô [-Wimplicit-int]

(If you’re serious with “Hello World”, do the same, but with¬†GNU hello!)


ccache is in openSUSE’s main repos, so installing is just a matter of:

$ sudo zypper install ccache

At this point, ccache config file (and ccache’s cache) is in ~/.ccache/:

$ ccache -s
cache directory /home/dario/.ccache
primary config /home/dario/.ccache/ccache.conf
secondary config (readonly) /etc/ccache.conf
cache hit (direct)          0
cache hit (preprocessed)    0
cache miss                  0
cache hit rate           0.00 %
cleanups performed          0
files in cache              0
cache size                0.0 kB
max cache size            5.0 GB

All that’s remaining to be done is:

    • to go back in $HOME/.colorgcc, and change that same block of lines again
    • to define CCACHE_PATH=/usr/bin
# Uncomment this if you want set up default path to gcc
g++: /usr/lib64/ccache/g++
gcc: /usr/lib64/ccache/gcc
c++: /usr/lib64/ccache/c++
cc: /usr/lib64/ccache/cc
clang: /usr/lib64/ccache/clang
clang++: /usr/lib64/ccache/clang++
gfortran: /usr/lib64/ccache/gfortran
export CCACHE_PATH="/usr/bin"

(The latter, I added it to .bashrc.)

Done. Now you’ll see that, building stuff has an impact in ccache statistics (and it’s also faster, hopefully!! ūüôā )

$ ccache -s
cache hit (direct)                82
cache hit (preprocessed)           1
cache miss                       392
cache hit rate                 17.47 %
called for link                   27
called for preprocessing          27
compiler produced empty output    49
preprocessor error                 2
unsupported compiler option        2
no input file                  79579
cleanups performed                 0
files in cache                  1172
cache size                      59.9 MB
max cache size                   5.0 GB

Just FTR, some links, which were useful when setting this up in the past, on other distros:

Posted in Linux, openSUSE, SUSE, Technology, Work | Tagged , , , , , , , , | Leave a comment

LinuxLab 2018, in Florence

This Monday and Tuesday (3rd and 4th of December) were the days of LinuxLab2018. It’s only the second year they’re (Develer) doing this conference, but it’s a quite good one already, at least in my opinion.

SUSE @ LinuxLab2018

SUSE @ LinuxLab2018, in Florence

For sure, it stands out in the Italian landscape of Linux technical conference… assuming there even are others worth being mentioned. I was there last year, and have been there again this year, and this year it has been even more fun!

In particular, it was rally cool to meet again and catch-up with some of my friends and mates, mostly from the Ph.D time. Interestingly enough, most of us managed to continue “doing Linux stuff”, in one way or another, over these years. ūüėÄ
I’m glad they’ve noticed this conference as well, and recognized it as a good opportunity to see what’s around –in Linux, here in Italy– as well as sharing what they’re currently doing, as I did myself.

Having skipped more than one LinuxConf (now Open Source Summits), it was a while since I saw one of the famous¬†Jonathan Corbet‘s “Kernel Weather Report” live. And, yes, it’s still as cool as I remembered it.

My talk, this time, was about “VIRTUALIZATION IN THE AGES OF SPECULATIVE EXECUTION HARDWARE BUGS”. I think it went well… I had too much material (and I knew it!) so I had to rush a little bit. I did a so-and-so job at covering everything that I wanted to (and I sort of have the impression I’ve been given a couple of minutes less than promised! :-P), but I’m happy about the overall turnaround. And in fact, I received good feedback. ūüôā

The slides, for the interested, are below (or at this link). Please notice that, although I did my best, these stuff drives me crazy all the times I try to (re-)figure out how they work exactly! So, if anyone spot mistakes, do not hesitate to point that out to me.

LinuxLab18_ Virtualization in the age of Speculative Execution HW Bugs

Thanks to the organizers for letting me attend and present, and to SUSE for letting me go. Looking forward to next year…

Posted in General | Leave a comment

nautilus 3.6: where the hell is ‘Connect to Server’ ?

From where it has been introduced in GNOME / Nautilus, I’ve always been an assiduous, diligent, consistent and zealous user of the ‘Connect to Server’ functionality. It’s just really really really convenient, that’s all about it.

So, as soon as I finished installed something which came with Nautilus 3.6 (we’re now at 3.8, and it’s pretty much the same), which I ¬†think at the time was Fedora 18, I started looking for it, and ¬†was quite upset when I did not actually find it!

I looked for it by clicking on the ‘gear’ icon… and failed! Then¬†I looked for it under the ‘arrow down’ icon… and failed!



At this point I was really mad, especially as I started to think the GNOME guys could have removed it, which would have been very, VEry, VERY bad for me! Then the light. Just by chance, I clicked on window name, on the left, in the top panel (usually called ‘the App menu’ in GNOME3 jargon, see below) and found it… Phew!

Nautilus 'Connect to Server'

Oh, BTW, the same applies to ‘Enter Location’, which I also find a lot useful.

Of course, this post comes after a while that things are like this, so I guess everyone is used to the new interface right now… But, I mean, one never knows! ūüėõ

Posted in Fedora, Linux, Technology | Tagged , , , , , , | 5 Comments

Xen NUMA Scheduling on The Register

Hey! Seems like the stuff I’m doing for Xen 4.3¬†made it on The Register¬†!!! ūüėõ

The Register on Xen 4.3 being released (July 9th, 2013)

The NUMA-aware scheduler is an important component in Xen on machines with multiple processor sockets […]

As the number of VMs climbs in the machine, the effect of NUMA-aware scheduling increases, as you can see in these preliminary benchmark test results, and presumably this will also be the case as the number of sockets increases. It gets a bit dicey when a machine becomes overloaded with work, but even then the tweaks to make Xen appreciate the eccentricities of NUMA systems seems to help some.

Also, ‘the tweaks to make Xen appreciate the eccentricities of NUMA systems’ is, I think, the best definition for what I’m doing during most of my working hours… Thanks for that too, Register!

Posted in Technology, Work, Xen | Tagged , , , , , , , , | Leave a comment

Schr√∂dinger’s Cat in a Virtual ‘Box’

Yes, apparently¬†Schr√∂dinger’s cat is alive, as the latest release of Fedora¬†—¬†Fedora 19,¬†codename Schr√∂dinger’s cat– as been released on July 2nd, and that even happened¬†quite on time.

Fedora Logo

Fedora Logo

So, apparently, putting the cat¬†“in a box” and all the stuff was way too easy, and that’s why we are bringing the challenge to the next level: do you dare putting¬†Schr√∂dinger’s cat “in a virtual box”?

In other words, do you dare install Fedora 19 within a Xen virtual machine? And if yes, how about doing that using Fedora 19 itself as Dom0?

Continue reading

Posted in Fedora, Linux, Technology, Work, Xen | Tagged , , , , , , | 5 Comments

NUMA Aware Scheduling in Xen

citrix xen green sweets

Citrix Xen Sweets (by osde8info)

So, hacking the Xen Open Source hypervisor is what I do for living (and these are the guys providing me with my monthly paycheck for that: During the last months, I’ve been concentrating on improving NUMA awareness of the Xen scheduler, and this an attempt to describe what that is all about…

Background and Motivation

The official Xen blog already hosted a couple of stories about what is going on, in the Xen development community, regarding improving Xen NUMA support. Therefore, if you really are interested in some background and motivation, feel free to check them out:

Long story ¬†short, they say how NUMA is becoming more and more common and that, therefore, it is very important to: (1) achieve a good initial placement, when creating a new VM; (2) have a solution that is both flexible and effective enough to take advantage of that placement during the whole VM lifetime. The former, basically, means: <<When starting a new Virtual Machine, to which NUMA node should I “associate” it with?>>. The latter is more about: <<How hard should the VM be associated to that NUMA node? Could it, perhaps temporarily, run elsewhere?>>.

NUMA Placement and Scheduling

So, here’s the situation: automatic initial placement has been included in Xen 4.2, inside libxl. This means, when a VM is created (of course, if that happens through libxl) a set of heuristics decide on which NUMA node his memory has to be allocated, and the vCPUs of the VM are statically pinned to the pCPUs of such node.
On the other hand, NUMA aware scheduling ¬†has been under development during the last months, and is going to be included in Xen 4.3. This mean, instead of being statically pinned, the vCPUs of the VM will¬†strongly prefer to run on the pCPUs of the NUMA node, but they can run somewhere else as well… And this is what this status report is all about.

NUMA Aware Scheduling Development

The development of this new feature started pretty early in the Xen 4.3 development cycle, and has undergone a couple of major rework along the way. The very first RFC for it dates back to the Xen 4.2 development cycle, and it showed interesting performance already. However, what was decided at the time was to concentrate only on placement, and leave scheduling for the future. After that, v1, v2 and v3 of a patch series entirely focused on NUMA aware scheduling followed. It has been discussed during XenSummit NA 2012, in a talk about NUMA future development in Xen in general (slides here).  While at it, a couple of existing scheduling anomalies of the stock credit scheduler where found and fixed (for instance, the one described here).

Right now, we can say we are almost done. In fact, v3 received positive feedback and is basically what is going to be merged, and so what Xen 4.3 will ship. Actually, there is going to be a v4 (being released on xen-devel right at the same time of this blog post), but it only accommodates very minor changes, and it is 100% functionally equal to v3.

Any Performance Numbers?

Sure thing! Benchmarks similar to the ones already described in the previous blog posts have been performed. More specifically, directly from the cover letter of the v3 of the patch series, here’s what has been done:

I ran the following benchmarks (again):
* SpecJBB is all about throughput, so pinning
  is likely the ideal solution.
* Sysbench-memory is the time it takes for
  writing a fixed amount of memory (and then
  it is the throughput that is measured). What
  we expect is locality to be important, but
  at the same time the potential imbalances
  due to pinning could have a say in it.
* LMBench-proc is the time it takes for a
  process to fork a fixed number of children.
  This is much more about latency than
  throughput, with locality of memory
  accesses playing a smaller role and, again,
  imbalances due to pinning being a potential

This all happened on a 2 node host, where 2 to 10 VMs (2 vCPUs and 960 RAM each) were executing the various benchmarks concurrently. Here they are the results:

 | SpecJBB2005, throughput (the higher the better)  |
 | #VMs | No affinity |  Pinning  | NUMA scheduling |
 |    2 |  43318.613  | 49715.158 |    49822.545    |
 |    6 |  29587.838  | 33560.944 |    33739.412    |
 |   10 |  19223.962  | 21860.794 |    20089.602    |
 | Sysbench memory, throughput (the higher the better)
 | #VMs | No affinity |  Pinning  | NUMA scheduling |
 |    2 |  469.37667  | 534.03167 |    555.09500    |
 |    6 |  411.45056  | 437.02333 |    463.53389    |
 |   10 |  292.79400  | 309.63800 |    305.55167    |
 | LMBench proc, latency (the lower the better)     |
 | #VMs | No affinity |  Pinning  | NUMA scheduling |
 |    2 |  788.06613  | 753.78508 |    750.07010    |
 |    6 |  986.44955  | 1076.7447 |    900.21504    |
 |   10 |  1211.2434  | 1371.6014 |    1285.5947    |

Which, reasoning in terms of %-performance increase/decrease, means NUMA aware
scheduling does as follows, as compared to no-affinity at all and to static pinning:

     | SpecJBB2005 (throughput)       |
     | #VMs | No affinity |  Pinning  |
     |    2 |   +13.05%   |  +0.21%   |
     |    6 |   +12.30%   |  +0.53%   |
     |   10 |    +4.31%   |  -8.82%   |
     | Sysbench memory (throughput)   |
     | #VMs | No affinity |  Pinning  |
     |    2 |   +15.44%   |  +3.79%   |
     |    6 |   +11.24%   |  +5.72%   |
     |   10 |    +4.18%   |  -1.34%   |
     | LMBench proc (latency)         |
     | NOTICE: -x.xx% = GOOD here     |
     | #VMs | No affinity |  Pinning  |
     |    2 |    -5.66%   |  -0.50%   |
     |    6 |    -9.58%   | -19.61%   |
     |   10 |    +5.78%   |  -6.69%   |

The tables show how, when not in overload (where overload=’more vCPUs than pCPUs’), NUMA scheduling is¬†the absolute best. In fact, not only it¬†does a lot better than no-pinning on throughput biased benchmarks, as well as a lot better than pinning on¬†latency biased benchmarks (especially with 6 VMs),¬†it also equals or beats both under adverse circumstances (adverse to NUMA scheduling, i.e., beats/equals¬†pinning in¬†throughput benchmarks, and beats/equals no-affinity on the latency benchmark).

When the system is overloaded, NUMA scheduling scores in the middle, as it could have been expected. It must also be noticed that, when it brings benefits, they are not as huge as in the non-overloaded case. However, this only means that there is still room for more optimization, right?  In some more details, the current way a pCPU is selected for a vCPU that is waking-up, couples particularly bad with the new concept of NUMA node affinity. Changing this is not trivial, because it involves rearranging some locks inside the scheduler code, but is already being worked-on.
Anyway, even with what we have right now, we are overloading the test box by 20% here (without counting Dom0 vCPUs!) and still seeing improvements, which is definitely not bad!

What Else Is Going On?

Well, a lot… To the point that it is probably pointless to try make a list here! I maintain a NUMA roadmap on our Wiki, which I’m trying to keep updated and, more important, to honor and fulfill so, if interested in knowing what will come next, go check it out!

Posted in General, Technology, Work, Xen | Tagged , , , , , , , , , , , , , | Leave a comment

“An Oxford University study ( funded by Friends of the Earth showed that more than 45,000 lives a year could be saved if everyone ate meat no more than two or three times a week.”

Everyone should really think about this!

A Human Ecologist's View

FROM Paul McCartney to Lord Stern, more people are promoting the benefits of a meatless society.

Meat production not only contributes to climate change and land degradation but is also a cause of air and water pollution and biodiversity loss. The farming industry accounts for nine per cent of UK total greenhouse gases, half of which come from sheep, cows and goats. Is the meat on our plate really worth the impact on the planet?

Deforestation, manure and livestock flatulence all contribute to global warming and are associated with excessive meat consumption.

As nations become richer, they tend to eat more meat and more livestock has to be raised to keep up with the demand.

In turn, more grazing land is required and more forests are cut down to expand farmland. As trees get the chop the carbon dioxide that they have absorbed over their lifetime is eventually released back…

View original post 680 more words

Posted in General | Leave a comment

At least it looks like things are improving, perhaps, in a not too far future, neither all this “external” work nor these hacks will be necessary any longer…

Posted in Linux, Technology | Tagged , , , | Leave a comment

NVIDIA 310.32 on Kernel 3.7.7-201.fc18

English: The official symbol of the Linux dist...

Just very quickly, I wanted to build this version of the NVIDIA proprietary drivers for this Fedora kernel kernel-3.7.7-201.fc18.x86_64.
Continue reading

Posted in Fedora, Linux, Technology | Tagged , , , , , , | 2 Comments