Centos on BrandZ lx zones benchmarked
With Solaris 11, Sun/Oracle dropped “lx brandz” zones, the linux guest support for the solaris containers technology. Some doesn’t even knew this was existing. The perspectives of using ZFS’s capabilities for provisioning was really exciting. But that project wasn’t ready for production setups, and support was only provided for linux 2.4 kernels (although there was ways to run a 2.6.x), and with incomplete features.
I ran some performance tests few months ago. Let’s bring some figures explaining the Solaris 11 decision.

As shown above, brandz zones are full zones providing a syscall translation layer to the guest os. The linux guest is instanciated by running its init process, like a “user mode linux” system would be.
Overhead estimation
I used BYTE UNIX Benchmarks (Version 5.1.2) to run a set of micro benchmarks involving syscalls.
The brandz zone was set up with a Centos 5.4/i386 distrib, minimal install.
OpenSolaris Host details
| System: | opensolaris: OpenSolaris Development snv_134 X86 | |
| OS: | SunOS — 5.11 — snv_134 | |
| Machine: | i86pc: i86pc | |
| Language: | en_US.utf8 (charmap=, collate=) | |
| CPUs: | no details available | |
| Uptime: | 5:30pm up 1:08, 1 user, load average: 0.17, 3.21, 3.86; runlevel | |
Most Solaris details were not detected, but this is the global zone for the following brandz zone result.
Every zone was reduced to a minimal set of processes and brought to runlevel 3 (or single-user milestone).
Linux Guest details (Centos 5.4 i386)
| System: |
centos: GNU/Linux | |
| OS: | GNU/Linux — 2.6.18 — BrandZ fake linux | |
| Machine: | i686: i386 | |
| Language: | en_US.utf8 (charmap=”UTF-8″, collate=”UTF-8″) | |
| CPUs: | 0: | AMD Athlon(tm) 64 X2 Dual Core Processor 4800+ (0.0 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET |
| 1: | AMD Athlon(tm) 64 X2 Dual Core Processor 4800+ (0.0 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET |
|
| Uptime: | 10:28:23 up 1 min, 1 user, load average: 0.16, 0.58, 0.34; runlevel 3 | |
The following table shows score for both zones, and relative performance.
| CentOS Score | Native Score | Difference | |||||
| 1 thread | 2 // | 1 // | 2 // | 1// | 2// | ||
| Execl Throughput | 82.00 | 99.30 | 204.90 | 230.20 | lps | -60,0% | -56,9% |
| File Copy 1024 bufsize 2000 maxblocks | 31784.90 | 45180.30 | 40514.50 | 54613.10 | K Bps | -21,5% | -17,3% |
| File Copy 256 bufsize 500 maxblocks | 8273.00 | 11576.50 | 10601.20 | 13860.50 | K Bps | -22,0% | -16,5% |
| File Copy 4096 bufsize 8000 maxblocks | 122401.90 | 172447.90 | 149167.70 | 204321.90 | K Bps | -17,9% | -15,6% |
| Pipe Throughput | 58154.50 | 80420.50 | 89803.10 | 117446.00 | lps | -35,2% | -31,5% |
| Pipe-based Context Switching | 3773.30 | 6809.80 | 3838.50 | 7238.90 | lps | -1,7% | -5,9% |
| Process Creation | 134.20 | 151.90 | 263.30 | 301.20 | lps | -49,0% | -49,6% |
| Shell Scripts (1 concurrent) | 210.00 | 238.70 | 432.50 | 482.00 | lpm | -51,4% | -50,5% |
| Shell Scripts (16 concurrent) | 15.80 | 14.90 | 32.40 | 33.00 | lpm | -51,2% | -54,8% |
| Shell Scripts (8 concurrent) | 32.20 | 30.50 | 66.10 | 67.50 | lpm | -51,3% | -54,8% |
| System Call Overhead | 60471.00 | 81388.60 | 58388.50 | 73052.70 | lps | 3,6% | 11,4% |
Running syscalls micro benchmarks is likely to draw the worst case, and we can see an increasing overhead (up to 11.4%) when running multiple threads. On the other figures, we can see a real performance decrease for I/O where increasing buffer size doesn’t really help: This means the syscall overhead only has little impact in the overall performance decrease and there’s probably a 15% performance hit from another cause. Processes spawning performance is really bad, and this is also probably due to the fact a conversion is made before attaching them to the Solaris kernel (remember we do not run any linux kernel, just its init process).
Really weak in worst cases and on I/O, this zones were probably usable for cpu intensive tasks only. An unsurprising drop of unpolished technology. (Note they also provide para-virtualized linux support through virtualbox on x86 platforms).
HomeMade Antifreeze Glass Cleaner
For the ones living in cold areas, here’s empirical measurements for required antifreeze in car glass cleaner. If it can help someone.
Using 90% ethanol (inc. 3% methanol) as anti freeze agent:
50% : up to -30°C
33% : up to -20°C
25% : up to -15°C
20% : up to -14°C
16% : up to -13°C
10% : up to -7°C
Geiger counters and dosimeters price craziness
Totally out-of-stock for most of them (popular models shipping from September/October), Geiger prices have gone really high. But how much ?
I reviewed current prices (27/06) in online stores with google and e-bay’s prices using both current and won/sold items search.
I retrieved the pre-Fukushima incident prices (Last update of his page in February) from Vaughn Aubuchon’s web page. He has information for many common counters and dosimeters, including sensor comparison and fix schema for antiques.
The lowest prices from stores are usually for pre-orders. Some stores even offer higher prices for a shortest availability option.
RADEX RD1503
- Before Fukushima price: 85 EUR
- Online stores: 225~
- E-Bay Prices: 230~850 EUR
price increase +270 to +1000%
RADEX RD1706
- Online Stores: 259-720 EUR
- E-Bay Prices: 399 ~ 850 EUR
Kvarts DRSB-01
Hard to find simple geiger counter
- Before Fukushima price: 16 EUR
- Manufaturer price: ?
- Online Stores: up to 260 EUR for a used one !
- E-Bay Prices: 65 EUR
price increase +400% to 1625% !
Gamma Scout
- Before Fukushima price: 246 EUR
- Manufaturer price: ?
- Online Stores: 277-365 EUR
- E-Bay Prices: 605 ~ 1400 EUR
price increase +12% to 569% !
Terra-P IP20 / Ecotect MKS-05
- Before Fukushima price: 118 EUR
- Manufaturer price: ?
- Online Stores: 345 ~ 999 EUR
- E-Bay Prices: 550 ~ 780 EUR
price increase +292% to 846% !
Victoreen Model CD V-700
- Before Fukushima price: 35 EUR
- Manufaturer price: cold war antique !
- Online Stores: 210 EUR (as seen on anythingradioactive.com / 185£)
- E-Bay Prices: 70 ~ 256 EUR
price increase +100 to +730%
SOEKS 01М (new)
- Before Fukushima price: Unknown ( new model )
- Manufacturer price: 150 EUR ( 6000 roubles / June 2011 )
- Online stores: 230~420 EUR (note soeks.eu is now selling for $399 when still listed $599 in orders’s drop list)
- E-Bay Prices: 230 ~ 400 EUR
price increase +53 to +266%
There’s also some clones on the market like the ukrainian “TARREX” or the Chinese “LK3600″.
(Français) Tunnels IPv6 et smtp.free.fr
Sorry, this entry is only available in Français.
(Français) Ergonomie Voyages SNCF, toujours sur la mauvaise voie
Sorry, this entry is only available in Français.
Extracting the dialed number from phone record
I ran into a prank call today on youtube, and the authors didn’t care about removing the sound of the dialed number. Comments were arguing that the number could be retrieved. Of course it can: Everyone knows you can simply play that record to redial the number and generating DTMF tones is easy (I wrote my own phone-book application when 15, dialing numbers from my soundblaster card). What about the reverse process then ? Let’s try:
Extracting and locating the DTMF tones within the record. I used Audacity:

According to Wikipedia, here’s the matrix for the DTM Frequencies:
| 1209 Hz | 1336 Hz | 1477 Hz | 1633 Hz | |
|---|---|---|---|---|
| 697 Hz | 1 | 2 | 3 | A |
| 770 Hz | 4 | 5 | 6 | B |
| 852 Hz | 7 | 8 | 9 | C |
| 941 Hz | * | 0 | # | D |
Using the Spectrum analysis module on the selected sample and with the appropriate parameters, you can clearly see the two tones pikes:
Here, we can identify the 770Hz + 1336Hz dual tones revealing the ’5′ number. Getting the full number is just a matter of minutes
I used the Barlett Window with 512 Bytes sample and displayed using the logarithmic scale (as we look for low freq pikes).
Don’t let low priority jobs throttle up your cores
On laptop, low priority background processes can kill your battery really fast even if you’re using the ‘ondemand’ cpu frequency scaling. This remark also applies to saving power on desktop.
With lowest priority, any intensive process will still throttle up your cpu frequency. You usually want it to take only the remaining cpu cycles, not caring about how long this task takes.
You can solve this problem by asking the ondemand cpu governor to ignore tasks with nice values higher than default.
To apply this on every core on the system:
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load
For permanent use, as it’s done though the /sys/, you’ll need to add it to your rc.local or a custom init.d script ( sysctl.conf can’t be used here ).
Sixxs.net tunnel endpoint easy selection
Instead of guessing the closest and fastest endpoint before registering your Sixxs.net IPv6 tunnel,
just run that little script:
https://github.com/fcartegnie/sixxspopelector/raw/master/sixxslist.pl
It will just fetch the latest tunnels list and ping them.
sudo perl sixxslist.pl
Retrieving page
Testing hosts
Pinging bebru01.sixxs.net... 83.71 ms
Pinging bebru02.sixxs.net... 78.50 ms
Pinging brudi01.sixxs.net... 344.92 ms
Pinging dkcph01.sixxs.net... 84.20 ms
Pinging dkcph02.sixxs.net... 500.93 ms
Pinging eetll01.sixxs.net... 105.96 ms
Pinging fihel01.sixxs.net... 176.96 ms
Pinging frmrs01.sixxs.net... 58.09 ms
Pinging decgn01.sixxs.net... 65.25 ms
Pinging dedus01.sixxs.net... 64.78 ms
Pinging deham01.sixxs.net... 75.89 ms
Pinging deham02.sixxs.net... 92.31 ms
Pinging demuc02.sixxs.net... 64.55 ms
Pinging iedub01.sixxs.net... 73.23 ms
Pinging iegwy01.sixxs.net... 136.07 ms
Pinging ittrn01.sixxs.net... 101.98 ms
Pinging lulux01.sixxs.net... 91.69 ms
Pinging nlams04.sixxs.net... 94.15 ms
Pinging nlams05.sixxs.net... 62.22 ms
Pinging nlams01.sixxs.net... 63.98 ms
Pinging nlede01.sixxs.net... 80.49 ms
Pinging nlhaa01.sixxs.net... 63.29 ms
Pinging nzwlg01.sixxs.net... 341.66 ms
Pinging noosl01.sixxs.net... 80.70 ms
Pinging plpoz01.sixxs.net... 82.37 ms
Pinging plwaw01.sixxs.net... 80.93 ms
Pinging ptlis01.sixxs.net... 111.99 ms
Pinging simbx01.sixxs.net... 79.90 ms
Pinging sesto01.sixxs.net... 118.91 ms
Pinging chzrh01.sixxs.net... 88.84 ms
Pinging chzrh02.sixxs.net... 78.59 ms
Pinging gblon02.sixxs.net... 52.97 ms
Pinging usqas01.sixxs.net... 153.30 ms
Pinging usbos01.sixxs.net... 156.51 ms
Pinging uschi02.sixxs.net... 152.75 ms
Pinging uschi03.sixxs.net... 186.11 ms
Pinging usdal01.sixxs.net... 195.37 ms
Pinging usphx01.sixxs.net... 231.69 ms
Pinging demun01.sixxs.net... no fair delay
Pinging nlams02.sixxs.net... no fair delay
Pinging nlams03.sixxs.net... no fair delay
Pinging usatl01.sixxs.net... 500,91 ms
Pinging uschi01.sixxs.net... 500,89 ms
Pinging uslax01.sixxs.net... 500,83 ms
Pinging usewr01.sixxs.net... 500,93 ms
And your winners are:
gblon02.sixxs.net (52,97 ms away)
frmrs01.sixxs.net (58,09 ms away)
nlams05.sixxs.net (62,22 ms away)
nlhaa01.sixxs.net (63,29 ms away)
nlams01.sixxs.net (63,98 ms away)
From Digital to analog, to easy money
As an update to my previous post, here’s another spotted totally useless chinese product: An HDMI to YUV converter. Of course, there’s no DSP, it’s just raw signal reassignement…
Supposely only used by a ‘special’ appliance. But customers can’t be aware of this.

Buffalo WZR-HP-G300NH additional packages environment setup (ddwrt)

Assuming you’ve properly configured and initialized your jffs filesystem on your Buffalo WZR-HP-G300NH running the DD-WRT firmware, here’s the instructions to set-up the root filesystem (it needs its own, as the main root is not writable) and its package manager.
Creating root and installing the package manager
Download a compatible rootfs and install it in /jffs
cd /jffs
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-rootfs.tar.gz -O - | tar -zxf -
Download the opkg package manager which allows reconfiguring paths
wget "http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/opkg_*.ipk"
ipkg -d /jffs/ install opkg_*.ipk
Alternative 1 – relocated
Create your opkg configuration (using echo to allow copy/paste without switching to vi)
echo "src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/" > /jffs/etc/opkg_relocated.conf
echo "dest root /jffs" >> /jffs/etc/opkg_relocated.conf
echo "dest ram /tmp" >> /jffs/etc/opkg_relocated.conf
echo "lists_dir ext /jffs/var/opkg-lists" >> /jffs/etc/opkg_relocated.conf
You now have a second root installed in /jffs with its package manager, but we need to fix runtime binaries and libraries paths.
Create the setup script in your jffs root:
echo "export LD_LIBRARY_PATH=/jffs/lib:/jffs/usr/lib:/lib/:/usr/lib" > /jffs/setup.relocated
echo "export PATH=/jffs/bin:/jffs/sbin:/jffs/usr/sbin:/jffs/usr/bin:/bin:/sbin" >> /jffs/setup.relocated
echo "alias opkg='opkg -f /jffs/etc/opkg_relocated.conf'" >> /jffs/setup.relocated
chmod +x /jffs/setup.relocated
Initialize your environment when you need to use it
. /jffs/setup.relocated
Alternative 2 – chroot’ed
Here’s a better alternative relying on chroot, but needs to have completed alternative 1′s steps first. (or you won’t be able to install chroot)
Install chroot
opkg install chroot
Create the setup script for this configuration
echo "BIND_DONE=\`mount | grep /jffs/proc\`" > /jffs/setup.chroot
echo "if [ -z \"\$BIND_DONE\" ]; then for fs in dev sys mnt proc ; do mount --bind /\$fs /jffs/\$fs ; mount --bind /tmp/var /jffs/tmp/ ; done ; fi" >> /jffs/setup.chroot
echo "mkdir /var/lock" >> /jffs/setup.chroot
echo "/jffs/usr/sbin/chroot /jffs" >> /jffs/setup.chroot
chmod +x /jffs/setup.chroot
Create a regular opkg configuration to make it work inside chroot
echo "src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/" > /jffs/etc/opkg.conf
echo "dest root /" >> /jffs/etc/opkg.conf
echo "dest ram /tmp" >> /jffs/etc/opkg.conf
echo "lists_dir ext /var/opkg-lists" >> /jffs/etc/opkg.conf
rm /jffs/etc/opkg/xwrt.conf ; ln -s /etc/opkg.conf /jffs/etc/opkg/xwrt.conf
cp /etc/resolv.conf /jffs/etc/resolv.conf
Initialize your environment when you need to use it
. /jffs/setup.chroot
Finally
don’t forget to fetch the packages list:
opkg update
You can now install any package you want.







