Sunday, March 22, 2015

Tietokannan levyjärjestelmän kuormituksen vaikutus levyviiveisiin

Levyjärjestelmän kuormituksen ja viiveiden simulointi ei ole helppoa koska kyse on monimutkaisesta järjestelmästä missä on useammalla tasolla välimuisteja sekä resurssien jakoa.

Sain kuitenkin viimein tehtyä mielessäni olevan hyvin yksinkertaisen simuloinnin jossa simuloidaan suoraan erillisiin levyihin kohdistuvaa kuormaa ja etenkin sitä miten kuorman kasvaessa ajallisesti päällekkäiset lukupyynnöt vaikuttavat lukupyyntöjen viiveisiin. Levy on rajallinen resurssi ja yksinkertaisimmillaan jokainen lukupyyntö kestää keskimäärin nykylevyillä 5,5 millisekuntia. Nykyisillä levyillä on kuitenkin käytössä oma sisäinen "asynkroninen" jononsa kuten NCQ tai TCQ joka mahdollistaa levylukujen järjestäminen levyn sisällä niin että se voidaan tehdä pienimmällä mahdollisella lukupään liikkeellä. Kuitenkin keskimäärin voidaan vielä sanoa että nykyjärjestelmässä 5,5ms on hyvä hakuaika.

Johtuen tuossa hakuajasta levyllä on myös maksimi lukujen määrä sekunnissa mikä on 1s/5,5ms eli noin 180 IOPS.

Levyistä hyviä suorituskykytestejä löytyy täältä:
StorageReview.com Benchmark Database


SSD-levyjen hakuajat ovat tietenkin huomattavasti nopeammat joten niitä on tässä edes turha käsitellä.

Käytin oman levyio-simulaattorini tekoon kaikkein kehittyneintä työkalua eli Exceliä :)
Kun annan parametreiksi IOPS, levyjen määrän, testin keston sekunteina ja levyn keskimääräisen hakuajan, kaavani luo satunnaisluvulla tarvittaman määrän testihakuja. Kaava jakaa nämä jokaiselle levylle erikseen ja laskee päällekkäistä operaatioista aiheutuvan lisäviiveen. Kaavan maksimimäärä testihauille on tällä hetkellä 15000 ja teknisesti onnistuisi luultavasti ainakaan 64000 mutta se ei ole tarpeen koska huomattavasti pienemmälläkin määrällä saa simulaatiossa jo riittävän tarkkuuden.

Ajoin testit kymmenellä levyllä ja testien simuloidut kestot olivat 7-10 sekunnin välillä. Excel suoriutui niistä kohtuullisen nopeasti, kaavojen päivitys eli yhden testin ajo kesti n. 15 sekuntia neljällä prosessorilla.


Käyrässä pystyakseli on hakuaika millisekunneissa ja vaaka-akseli IOPS. Kymmenen levyn järjestelmässä 5,5ms hakuajalla 1800 IOPS on teoreettinen maksimi.


Kun tuo arvo ylitetään, vain nuo 1800 IOPS suoritetaan ja sen yli menevät pyynnöt jäävät jonoon joka kasvaa jatkuvasti. Johtuen simuloinnin lyhyydestä keskimääräinen hakuaika on vielä "järkevä" vaikka pitempään simuloitaessa levyjonon koko kasvaa jatkuvasti ja hakuaika on käytännössä ikuinen ts. järjestelmä on jumissa ja kyselyt keskeytyvät timeoutiin. 




Yllä olevassa kaaviossa on keskimääräinen hakuaika kuormituksen funktiona. Pystyakseli on logaritminen. Pienellä kuormalla 5,5ms hakuaika saavutetaan mutta kuorman kasvaessa rinnakkaisten hakupyyntöjen määrä kasvaa ja kun levyt ovat kuormittuneet n. 50% niin hakuaika on kasvanut jo 8,1 millisekuntiin. Kun hakuaika on jo 20 millisekuntia, niin levyjärjestelmä on jo kuormittunut 80%:iin. 

Todellisuus tietenkin on taas monimutkaisempi. NCQ ja TCQ-ominaisuudet levyissä alkavat toimia vasta kun levyillä on jo jonoja ts. ne tasaavat hakuajan nousua suuremmalla kuormalla. Samalla se tarkoittaa myös että levyllä ei jonoja ole jos hakuaika on lähellä minimiä.

Samoin olen tässä käsitellyt vain hajalukuja. Riippuen kannan kuormasta osa hauista on hajalukuja ja osa taulujen läpilukuja yms. missä haetaan suuri määrä peräkkäin tallennettua dataa ts. peräkkäislukuja joissa lukupään siirtymistä on vähemmän ja luku siksi tehokkaampaa.

Mielenkiintoinen näkökanta on myös kuinka paljon levyviiveet aiheuttavat käyttäjien työajan menetystä. Jos kaikki levyhaku on käyttäjien tekemää( mitä se harvoin on) niin voidaan laskea työajan menetykset kuorman kasvun ja niiden viiveiden kasvun myötä. Jos tiedetään käyttäjien tekemien hakujen osuus koko kuormasta, voidaan allaolevaa kaaviota myös arvioida sillä kertoimella.



Ajatuksena tuossa on että kun tunnin aikana tehdään tunnin ajan levyhakuja, vievät ne samalla käyttäjien työaikaa saman verran. Jos hakuaika tuplaantuu, viedään kahden hengen työaika. Levykuorma tietenkin vaihtelee päivän aikana, joten silloin verrataan keskimääräistä kuormitusta työaikana. Kun siis 10 levyn järjestelmää kuormitetaan 600 IOPSn verran, vie se normaalien levyviiveiden lisäksi yhden hengen työpanoksen johtuen rinnakkaisuudesta tulevista lisäviiveistä. Jos järjestelmä on kuormittunut 80%:iin niin rinnakkaisuuden viemä käyttäjäaika vastaa jo 16 käyttäjän työpanosta. Laskelmia levynkuormituksesta ja käyttäjäviiveistä kannattaakin käyttää tukena levyjärjestelmän tehotarpeita ja kustannuksia arvioitaessa

Samaa levykuormituksen arviointia voi käyttää myös esimerkiksi Hadoopin levyjen määrää suunniteltaessa.

Tuesday, March 3, 2015

Keep-it-simple-style notification system for Linux and databases

Sometimes you don't have the Oracle Enterprise Manager for notifying you about errors in database or you need simple notification system also for operating system errors.

All you need is this simple script to run checks and report errors with mail. 

cd /home/your/script/directory
#
#Clear old errors
#
rm -f ErrorList.txt

mkdir -p ErrorLogs
#Remove messagelogs older than 3 hours
#(the message will be resent every 3 hours =180 minutes )
find ./ErrorLogs/* -mmin +180 -exec rm -Rf -- {} \; 2>/dev/null
#
# List all errors
#
echo "Warning:House is on fire" >> ErrorList.txt

#
# Report all errors
#
while read ErrorLine; do
        #Create filename
        ErrorLogFilename="ErrorLogs/$(echo $ErrorLine | sed -e 's/ /_/g').log"
       
        if [ ! -f "$ErrorLogFilename" ]
        then
                #Send mail
                mail -s "$ErrorLine" yourmail@server.com < /dev/null
                touch $ErrorLogFilename
         fi
done <ErrorList.txt

Create directory for this script and name the script as ErrorCheck.sh. Chmod it as executable.

Ths "List all errors" part will contain all checks you want to make. All checks should return line of error text if error is occurred. This line will be the subject line of mail message send to you. Don't use special characters because that line is also used as a file name for making sure the mail message is sent only once in 3 hours.

This keep-it-simple-solution also brings one problem. If an error is sent and you solve the problem, but the error happens again in 3 hours, it does not send you a mail again before the 3 hours waiting time. If you want to reset the error, you have to delete that errors error log file from ErrorLogs directory.

In "List all errors" section you can add meters directly or let it call another script that contains all meters. The choice is yours. You can call sqlplus and spool output to ErrorList.txt. Only thing that matters is that every line in that ErrorList.txt file will be sent as an error mail to you.

The "Report all errors" part loops ErrorList.txt file line by line. ErrorLogFilename is that line but all spaces are converted to underscores. You can add more conversions if you have trouble with special characters.

The "Send mail" part simple creates a new mail with error as subject line and sends it to yourmail@server.com.You can use a mail command available in your system.

You can crontab this to run every hour or whatever you want. You can create multiple scripts with different timings.
You can...
No. That's enough. After all, this is supposed to be keep-it-simple :)


Monday, February 23, 2015

Netradar - "weather forecast" app for telecommuters




If you do mostly remote work like I do you will like this app. It measures your network speed , manually or on the background and creates a map of your network's speed. What is even better, it sends your network measurements to Netradar's cloud so what you actually see is an average of all Netradar users.

If I want to go outside hiking or camping I can check from Netradar in advance does the places I'm going to go have a good enough network to do also ad-hoc working. If that place is " a white spot on the map" I simply take the measurements myself and the white spot is gone! Crowdsourcing with a simple pushing a button.

With Netradar you can take measurements manually but the new version has also a feature that measurements can be taken continuously on background. It will not be a network hog. The data transferred using this background mode should be less than 1 MB per day. This mode is great if you want to for instance go for a short hike but don't want to make stops to take manual measurements.




The maps accuracy in the app is 200 meters but the data in the cloud has the original GPS accuracy so it is possible that there will be better resolution later. I would like to see for instance if I'm in "blind spot" and just look from the map where should I walk for a better network.

Netradar is an academic project in Aalto University's Department of Communications and Networking.
If you are not afraid of little science here's a paper from the project:
A Hybrid Approach to Measure Quality-of-Service in Modern Cellular Networks

Most of the measurements in the database are still from Finland so I invite non-finnish people to measure your favorite spots :)

Netradar website

Saturday, February 21, 2015

Airwheel of the future - here - today



Airwheel is automatically balanced wheel, like the Segway. Difference is that Airwheel is unicycle and the whole device is practically only wheel with motor, foot rests, batteries, and a little bit of electronics. The whole package is a minimalist's dream.



When I saw videos of Airwheel the first time, I was sold immediately. This will revolutionize the least my commute.

The invention has been done a couple of years ago, by an American company Solowheel. Solowheel sells its own unicycle for over 1000e price so it is no wonder that it did not change the world. Now, however, there has become a Chinese competitor Airwheel that has halved the price of the vehicle, widening
potential customer base for a considerable amount.

Airwheel is a unicycle which means that more balancing skills are needed than with a bicycle
For the "adults" that have learned how to ride a bike in childhood the biggest problem will be the humble oneself and to understand that learning the ride a bike was not hard because you were a child but because it is not easy to ride a bike. Learning to ride a unicycle might be a little bit harder and I don't think it will be for everyone. On the other hand how few people will never learn to ride a bike? I kitesurf so I knew finding the right balance will only be a matter of time and bruises. My riding is not yet anywhere as fluent as the riding that can be found in these my favorite Youtube videos. 
 




The maximum speed is 18 km/h but if you go faster than 12km/h it will give you a warning beeps so that 12km/h will be your normal driving speed. Still it is more than double the walking speed. This will change the "geography" of cities when all
exchanges between buses can be done with this or even you don't need a bus at all. 

However, there are also faster unicycles. This has a top speed of approx. 30 km / h, but falling in those speeds is really quite dangerous. Difference between the bicycles and unicycles in collisions is the unicycle rider will take the hit harder ie self-preservation instinct will make the unicyclist (hopefully) to drive more carefully.



Airwheel weights approx. 10kg so very long distances it cannot be carried even on online videos it seems so light when carried by girls (but for short distances). The motor is 90% of the whole weight so even the progress of battery technology won't bring the weight down.
Www.wheelgo.com : Component weights

However, there are already users self-made "carrying handles" so Airwheel can be pulled or pushed from behind in front like suitcases. The development is just beginning.

My Airwheel has a 170Wh  battery (should have. There was an error in delivery and I now have 130Wh model and waiting for a replacement) which should reach approx. 23 km of distance. When a cruising speed of 12 km / h, so that means two-hour running time and 90W of consumption (estimate). When the electric car takes approx. 23kW then this with it's 90W energy consumption is probably the most energy-efficient motorized vehicle.

That 23km coverage is possible on flat hard surface, warm conditions and light driver. I can get about 4,5km with 130Wh battery in cold +-0C conditions and soft surfaces. In this video, however, Airwheel has a range of 19 km obtained under optimal conditions and it's with an adult driver's weight:





The battery pack is not replaceable ie. replacement batteries are not for sale but hopefully the batteries can be changed later using a screwdriver. The batteries should last 1,800 cycles so with  a daily use the dilemma will arise only after five years. In kilometers that makes 40 000 km.

Of course, this has not yet been approved for road use in Finland. Finnish lawmakers with these matters are so fast-moving and safety conscious that even a Segway is not legal here. Be noted here that, for example, in Barcelona and Berlin there are Segway tours around the city for turists ie. a small training first and then they drive in queue in normal city traffic. And meanwhile Finland, even the police are not allowed to drive their own Segways in public roads because it is illegal ...


Luckily there should be a change of laws at January 2016 that would allow more diverse means of transportation. At end of year 2014the law changed also so that your bike no longer needs to have fixed lamp. Apparently, the law does not specifically require that the "bike" has to have two wheels, but the handlebars should be. Last year the police decided to stop a school boy because he was driving an unicycle:

     "According to the police, unicycles should have the brakes and handlebars, as well as the lamp."

In England TNT couriers have a pilot project of using the Airwheel in delivery:

Posties trial delivery by electric unicycle


Here's me driving in Hanko Tulliniemi in Finnish "hard winter" :) Driving in forests is a good practice because the road is not flat easy surface and you have to go around obstacles like rocks and trees.




Let's hope that Finland will soon adapt new legislation in order to remain competitive modern society.

Edit:
The maximun range so far 10km. I pumped my tire to 35PSI and air was +6C. I'm quite sure a can get at least 15km with hard surface, +20C temperatures and 170kWh battery. The >20km maximum ranges were driven in 8km/h speeds. I don't see a point of trying more range by slowing doing.


Sunday, February 8, 2015

Secure backup from your work computer to home NAS or cloud

Problem in making a backup to cloud or home NAS is security. If your home network is compromised, the attacker can read your work computers backup files. Same problem is if you backup your computer to cloud.

To solve that problem you can encrypt the backup. I'm using Truecrypt  but you can use the same method with other on-the-fly encryption software also. When the backup is saved as encrypted and the encryption is done in your work computer, the cloud or NAS does not have the encryption key and cannot read your backup. But you have to save the encryption key to somewhere else than your work computer. You don't want to loose your encryption key :)

At first, mount your NAS location(Backupdirectory) as local disk. You can of course use also other volume name than f:

net use f: \\NAS\Backupdirectory

In that directory create a Truecrypt file container (I'm not going that in detail). In this example file containers file name is Backup.tc.

Then you simply mount that file as local disk. The parameter /lg mounts the file container as disk G:

start "Truecrypt" /MIN "C:\Program Files\TrueCrypt\truecrypt" /q /p "Your truecypt password" /lg /v F:\Backup.tc

Here is the catch. Because it is now mounted as local disk, Windows 7 backup won't allow you to backup to that disk. You have to make it first as net share:

net share Backup=G:\ /GRANT:%USERNAME%,FULL

Now you can access it as  \\%COMPUTERNAME%\Backup

You can start the backup:
WBADMIN START BACKUP -backupTarget:\\%COMPUTERNAME%\Backup -include:C: -allCritical -quiet -vssFull

Same works also in Windows 8. Windows 8 also has File History backup that is more like file sync with revision history and you can use the same  \\%COMPUTERNAME%\Backup as destination directory for it.

Many people use notebook computers nowadays only with wi-fi and with this method it is easy to make automatic backups run at night. With 802.11n wi-fi whole 140GB backup takes about 3-4 hours.

Wednesday, January 28, 2015

Google Cardboard - virtuaalitodellisuutta kymmenellä eurolla

Google julkaisi viime kesänä Google Cardboard "virtuaalitodellisuuslasit". En oikein tiedä miksi kirjoitin tuon hipsuilla mutta keksintö on niin yksinkertaisen nerokas ettei se oikein tunnu todelliselta. Eihän kukaan keksi mitään noin hyödyllistä ja samalla noin halpaa. Kyseessä on siis pahvista rakennettavat lasit, johon lisätään vain kaksi linssiä, kuminauhaa ja pari magnettia...sekä se tärkein eli oma älypuhelin.

Älypuhelimissa on nykyään tarkat näytöt, riittävästi tehoja sekä sensorit jotka tunnistavat kallistukset ja suunnan. Lopputulos ei ole aivan yhtä hyvä kuin kalliimmissa virtuaalitodellisuuslaseissa mutta jos askartelupaketin saa alle 10 euron hintaan niin kokeileminen ei tule paljoa maksamaan. 


Todellisuudessa idea ei ole tullut ihan kokonaan Googlelta vaan jo vuosi sitten ilmestyivät Durovisin OpenDive-lasit.
Durovis Opendive


Duroviksen lasit kuitenkin ovat muoviset mikä nostaa hintaa hieman. Googlen lasit voi visuimmat leikata itse pahvista. Linssit pitää tietenkin ostaa silloinkin.

Näin jälkikäteen harmittaa ettei omassa puhelimessa ole kuin täys-hd-näyttö. Näiden lasien myötä nimittäin Retina-tason näytöistä todella on hyötyä. Omassa puhelimessani (S4 Active) ei toiminut laseissa kytkimenä toimivat magneetit mikä haittasi käyttöä.

Googlen Play:stä löytyy ilmainen Cardboard-sovellus sekä lukuisia demoja. Mercedeksen demo kilparadoilta oli hienoa katsottavaa. Kuva siis näkyy 3d:nä sekä päätä kääntämällä näet joka puolellesi. Esimerkiksi tulevan Kaiju-hirviöelokuvan demossa sai päätään käännellä kunnolla jotta sai selville mistä päin hirviö tulee.

Toivottavasti nopeasti saadaan standardi tapa näyttää myös elokuvia. Esimerkiksi levitystapana voisi käyttää normaaleja 3d-täys-hd tai 3d-4k-standardeja. Levitystapana kun tuon kuvan voisi helposti laajentaa kamerassa 360-asteen kuvaksi käyttäen vaikkapa Mercatorin karttaprojektiota:
 Tällöin 360-elokuva siis muunnettaisiin ylläolevaan projektioon ja puheliin muuntaisi sen takaisin 360-muotoon.

Google tukee laseja jo Google Earth ja Streetview sovelluksissa mutta itse en löytänyt omasta puhelimestani näitä ominaisuuksia.

Olisi melkoinen kokemus seurata vaikkapa SuperBowlia livenä Cardboardilla. Tekniikka alkaa olla siihen valmiina. Videokuvan streamaus kännykkään, ja voit vapaasti katsella kuin olisit paikan päällä. Näyttöjen tarkkuus kuitenkaan ei vielä ole riittävä aivan  kaiken urheilun seuraamiseen. Koripallon seuraamiseen ensimmäiseltä penkkiriviltä tarkkuus saattaa riittää.

Googlen pahvilaatikon ansioista kuitenkin käyttäjäkuntaa voidaan saada nopeasti ja kriittinen massa sovellusten ja videotuotannon tuottamiseen saavutetaan.

Sunday, January 25, 2015

Osram Lightify: Color gamut and spectrum


Osram Lightify is a wirelessly controlled lighting system using Zigbee Lightlink open source protocol.  Philips Hue uses the same protocol so these products should work together.

I have a Osram's Starter pack with one RGBW dimmable LED lightbulb (Lightify Classic A RGBW).  I could not find any measurements from internet about Lightify's or Hue's color gamut when I bought Osram so I did the measurements myself.

I simply used the Osram's Android App and did a full circle with hue slider. Then I selected the measurements that were the best representatives for primary colors from gamut corners. For measurements I used Colormunki Phone spectrophotometer and ArgyllCMS software.


Seems Osram can produce fairly deep blue and red but green might be better. The gamut for Philips Hue I picked from AvsForum. The blue line is not a line between measurements. It's a straight line between primary colors I picked and as you can see, the measurements follow that line well. 

The primaries I picked were :

x y
Red 0,683924 0,315904
Green 0,391678 0,501414
Blue 0,13699 0,051035


Here's the spectra for primary colors.


Here are the measurements when I selected 6500K as a color temperature from Android App:
                           CCT = 6377K (Delta E 2.747025)
 Closest Planckian temperature = 6260K (Delta E 2.419812)
 Closest Daylight temperature  = 6422K (Delta E 0.892155)
 Color Rendering Index (Ra) = 87.6
Color Rendering Index is good but could also be better, >90. For Philips Hue the CRI is claimed to be 91.