SSD's zijn hot. Na een review als reviews: OCZ Vertex getest gaan steeds meer Tweakers overstag om er ook een te kopen.
SSD's vragen echter om een andere behandeling dan HDD's, ook wanneer het op software aankomt. Zodoende een topic met wat tips, en ook een paar vragen van mij die anderen misschien weer kunnen beantwoorden.
Door 32 heads en 32 sectors te gebruiken bereiken we 512KB brokjes.
Kies nu o (nieuwe partitietabel), n (nieuwe partitie), p (primaire partitie), 1 (partitie 1), 2 (begin bij cylinder 2, anders align je niet goed), kies het aantal gewenste cylinders, t (kies partitietype), 83 (type: linux), w (schrijven).
Controleer nu of het aantal heads en sectors klopt:
Controleer nu de alignment:
Als het goed is start je partitie nu bij 1024.
Vaak zal dit 500 zijn (5 seconden). Hoe meer hoe beter natuurlijk, maar bedenk je wel dat je dat kan verliezen bij een crash of stroomuitval. Met 500 verlies je dus hooguit 5 seconden data, met b.v. 3000 zou dat 30 seconden zijn. Zo pas je dit tijdelijk aan:
Voeg het volgende aan /etc/sysctl.conf toe om deze wijziging permanent te maken:
Controleren of laptop mode actief is:
Laptop mode aanzetten:
Voeg "vm.laptop_mode=5" toe aan /etc/sysctl.conf om dit permanent te maken.
Voor mij werkte deze truck niet, maar ik zal hem toch geven inclusief alternatief:
Type about:config in de adresbalk.
Klik rechts op een regel.
Ga naar new>string.
Voeg browser.cache.disk.parent_directory toe.
Sluit Firefox.
Ga naar about:cache om te controleren of het gelukt is.
Je kan ook je cache uitzetten: ga naar about:config en type in cache. Zoek browser.cache.disk.enable en dubbelklik erop. Dit kost natuurlijk wat performance bij het laden van webpagina's..
Ik heb het zelf nòg ingewikkelder aangepakt. Mijn cache staat in /tmp/FirefoxRamCache/Cache. Ik heb in /etc/rc0.d/ en /etc/rc6.d/ het volgende script, K99firefoxramcache:
Dit maakt een archiefje van mijn cache en plempt dat op de HD. Bij het opstarten pak ik het weer uit:
~/.mozilla/firefox/4387rnhv.default/Cache is een symlink naar /tmp/FirefoxRamCache/Cache. Zo kan ik dus iedere dag weer snel verder met de cache van gisteren.
Om TRIM in te schakelen moet je de mountoptie "discard" gebruiken. Deze kan je dus (met een komma) achter noatime zetten.
(jordz. in "SSD's en Linux: tips en trucs")
Handleiding inclusief controle: http://askubuntu.com/questions/18903/how-to-enable-trim
Bronnen:
http://www.ocztechnologyf...um/showthread.php?t=54379
http://www.lesswatts.org/tips/disks.php
http://www.plugcomputer.o...x.php/Reduce_Flash_Writes
SSD's vragen echter om een andere behandeling dan HDD's, ook wanneer het op software aankomt. Zodoende een topic met wat tips, en ook een paar vragen van mij die anderen misschien weer kunnen beantwoorden.
Partition alignment
Deze handleiding is voor de OCZ Vertex maar werkt wellicht ook voor andere SSD's. Hiermee maak je je SSD 512KB aligned. De handleiding gaat er vanuit dat je SSD op /dev/sda is te vinden.fdisk -H 32 -S 32 /dev/sda
Door 32 heads en 32 sectors te gebruiken bereiken we 512KB brokjes.
Kies nu o (nieuwe partitietabel), n (nieuwe partitie), p (primaire partitie), 1 (partitie 1), 2 (begin bij cylinder 2, anders align je niet goed), kies het aantal gewenste cylinders, t (kies partitietype), 83 (type: linux), w (schrijven).
Controleer nu of het aantal heads en sectors klopt:
fdisk -l /dev/sda
Controleer nu de alignment:
fdisk -lu /dev/sda
Als het goed is start je partitie nu bij 1024.
VM writeback time
Linux kan schrijfacties bufferen om van meerdere acties één grote schrijfactie te maken. Ik heb er (nog) geen bewijs voor, maar vermoedelijk is dit over het algemeen beter voor SSD's. Zo controleer je hoe lang je systeem schrijfacties buffert:cat /proc/sys/vm/dirty_writeback_centisecs
Vaak zal dit 500 zijn (5 seconden). Hoe meer hoe beter natuurlijk, maar bedenk je wel dat je dat kan verliezen bij een crash of stroomuitval. Met 500 verlies je dus hooguit 5 seconden data, met b.v. 3000 zou dat 30 seconden zijn. Zo pas je dit tijdelijk aan:
echo 3000 > /proc/sys/vm/dirty_writeback_centisecs echo 3000 > /proc/sys/vm/dirty_expire_centisecs
Voeg het volgende aan /etc/sysctl.conf toe om deze wijziging permanent te maken:
vm.dirty_writeback_centisecs=3000
vm.dirty_expire_centisecs=3000
Swapfile
De beste optie hier: maak geen swappartitie op je SSD. Je sloopt hem voortijdig als deze swap ook echt aangesproken moet worden. Prop gewoon genoeg RAM in je systeem, of maak swap op een harde schijf naast je SSD. Verder is het aan te raden, al helemaal als je tòch eigenwijs swap op je SSD hebt, kernel swappiness op 0 te zetten:Voeg dus "vm.swappiness=0" toe aan /etc/sysctl.conf.Kernel swappiness is a controversial topic. The standard setting (60) for
kernel swappiness has the effect that inactive (but started) applications
will be moved to swap after some time. If the swap partition is placed
on a regular HDD in order to reduce wear of the SSD, then reloading the
application from swap can take several seconds. This causes annoying
delays and bad responsiveness of the system when you return from a
coffee break, for example. The solution is setting kernel swappiness
to zero, by adding a line vm.swappiness = 0 to /etc/sysctl.conf.
A temporary change for trying out the effect is possible by calling
echo 0 > /proc/sys/vm/swappiness (as root) from the command line.
Laptop mode
Laptop mode zorgt dat alle uitstaande I/O in één keer zal worden weggeschreven. Eén grote write is voor een SSD natuurlijk makkelijker te verwerken dan tig kleine writes aangezien er voor een kleine write, al is het maar een byte, een heel block moet worden gewijzigd.Controleren of laptop mode actief is:
# cat /proc/sys/vm/laptop_mode
Laptop mode aanzetten:
# echo 5 > /proc/sys/vm/laptop_mode
Voeg "vm.laptop_mode=5" toe aan /etc/sysctl.conf om dit permanent te maken.
Overzicht /etc/sysctl.conf toevoegingen
vm.dirty_writeback_centisecs=3000
vm.dirty_expire_centisecs=3000
vm.swappiness=0
vm.laptop_mode=5
Geen accesstimes
Standaard schrijft de gemiddelde Linux distro een timestamp weg iedere keer dat je een bestand bekijkt. Dat resulteert in bijzonder veel schrijfacties waardoor je SSD vroegtijdig kan komen te overlijden door slijtage. Open /etc/fstab met b.v. nano, gedit, vim of wat je voorkeur maar heeft en zoek je SSD op. Voeg dan de optie "noatime" toe met een komma. Stond er bijvoorbeeld eerst "defaults", dan maak je daar "defaults,noatime" van. Als je de atime echt nodig hebt kan je ook relatime gebruiken:En desnoods kan je op nodiratime terugvallen, welke alleen voorkomt dat voor het lezen van een directory een update weggeschreven moet worden. Voor bestanden worden met nodiratime nog wel accesstimes weggeschreven. Noatime heeft dus duidelijk de voorkeur als je de accesstimes kan missen. Type "mount" in een terminal om te controleren of je het goed hebt gedaan. Zo staat er bij mij:relatime works by updating the atime field on disk only if the file hasn't been accessed since the last time it was accessed, (to provide the new email detection capability) or when the last access was more than 1 day ago (to help programs and users clean up unused files in the /tmp directory).
/dev/sda1 on / type ext4 (rw,noatime,errors=remount-ro,commit=0)
Sla tijdelijke meuk in je RAM op
Als je voldoende leeg RAM hebt kan je dit doen. Zo kan je bijvoorbeeld aan het eind van /etc/fstab het volgende toevoegen:Zo heb je je /tmp voortaan in je RAM. Je kan ook /var/tmp en /var/log op deze manier in je RAM zetten als je dat wilt. Let wel op dat /var/tmp er is voor dingen waarvan programma's kunnen verwachten dat ze er na een reboot ook nog zijn, en logfiles in je RAM plaatsen heeft logischerwijs ook z'n consequenties.tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
Je kan op deze manier ook een map aanmaken voor andere dingen: maak een nieuwe map aan, b.v. /media/Ramdisk, en zet het volgende in je fstab:tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/log/apt tmpfs defaults,noatime 0 0
Standaard is tmpfs de helft van je RAM (let op: alleen wat je er echt opzet gaat ook van je RAM af, dus het kost niet half je RAM). Wil je een grotere tmpfs? Voeg size als optie toe:tmpfs /media/Ramdisk tmpfs defaults,noatime,mode=1777 0 0
Dit voorbeeld geeft een /tmp van 3,5GB.tmpfs /tmp tmpfs defaults,noatime,size=3584m,mode=1777 0 0
Zet je firefox cache in je RAM
Browsercache geeft een aardig aantal writes (dus: slijtage) op je SSD terwijl het nut maar beperkt is.Voor mij werkte deze truck niet, maar ik zal hem toch geven inclusief alternatief:
Type about:config in de adresbalk.
Klik rechts op een regel.
Ga naar new>string.
Voeg browser.cache.disk.parent_directory toe.
Sluit Firefox.
Ga naar about:cache om te controleren of het gelukt is.
Je kan ook je cache uitzetten: ga naar about:config en type in cache. Zoek browser.cache.disk.enable en dubbelklik erop. Dit kost natuurlijk wat performance bij het laden van webpagina's..
Ik heb het zelf nòg ingewikkelder aangepakt. Mijn cache staat in /tmp/FirefoxRamCache/Cache. Ik heb in /etc/rc0.d/ en /etc/rc6.d/ het volgende script, K99firefoxramcache:
code:
1
2
3
| #!/bin/bash tar --lzop -C /tmp/FirefoxRamCache -cf /tmp/FirefoxRamCache.tar.lzop Cache cp /tmp/FirefoxRamCache.tar.lzop /media/harde/schijf/of/ssd |
Dit maakt een archiefje van mijn cache en plempt dat op de HD. Bij het opstarten pak ik het weer uit:
code:
1
2
3
| #!/bin/bash mkdir /tmp/FirefoxRamCache tar -C /tmp/FirefoxRamCache -xf /media/harde/schijf/of/ssd/FirefoxRamCache.tar.lzop |
~/.mozilla/firefox/4387rnhv.default/Cache is een symlink naar /tmp/FirefoxRamCache/Cache. Zo kan ik dus iedere dag weer snel verder met de cache van gisteren.
I/O scheduler
Stukje Engels van het OCZ-forum, als er echt behoefte aan is vertaal ik het wel.Changing scheduler could improve the speed of the SSD.
Originally Posted by Pigeon
Do not do not do not do not use the anticipatory (default for for 2.6 up to 2.6.18) scheduler or the cfq (default for 2.6.19-current) scheduler. These schedulers achieve a remarkable speedup on standard, platter hard drives by pausing after each read: usually after a process performs a read, it will read again (presumably grabbing another chunk of the same file) in quick succession. This trick will help alleviate seek times, which is the biggest detriment to hard drive performance. (note that at one point, this 'feature' of cfq was broken) You and I do not have this performance disadvantage. The noop and deadline schedulers do not perform this 'advanced logic' that serves little purpose for SSDs other than slowing them down.
However, deadline and noop are not created equal. Deadline will re-order reads and writes, attempting to decrease latency, etc. Noop will do absolute no logic of any kind - it is a simple fifo. It's really designed for people with dedicated RAID hardware that will perform all of this logic for them. Sometimes this is useful - if you have an eeepc and underclock it to 800MHz for maximum battery life, you really need every CPU cycle you can get, and noop can be a decent idea.
However, if you have a reasonably fast system, you're better served by deadline. It gives more priority to reads over writes: delays caused by waiting for io is typically caused because of a delay from reading, not writing.
To find out which schedulers are available on your system and which one is currently in use, use the command cat /sys/block/sda/queue/scheduler. The one in use is marked by [].
To temporarily change scheduler during runtime.
* Login as root [sudo -i]
* echo deadline > /sys/block/sda/queue/scheduler
* Logout the root shell [logout]
To make this change permanent you could add appropriate lines to /etc/rc.local. You could also edit /boot/grub/menu.lst.
Some remarks:
* Setting the scheduler should probably be done automatically during boot.
If there are only SSDs in the system and no regular HDDs, one can select
deadline globally by adding the kernel parameter elevator=deadline in the
kernel parameter line of the boot loader.
Another way is editing /etc/rc.local or /etc/init.d/boot.local,
depending on the Linux distribution. There one can directly add a line
echo deadline > /sys/block/sda/queue/scheduler
This will only change the scheduler for the specified device, so
this is the way to go on a mixed system with both SSDs and HDDs.
Using the kernel parameter in GRUB might not be permanent during a kernel upgrade.
Instead find the line beggining with # kopt=root=UUID= and add the parameter elevator=noop to it. Don't ever remove the starting # from this line.
When it's done, run the command sudo update-grub.
TRIM
TRIM zorgt ervoor dat je OS aan kan geven aan je SSD dat bepaalde blokken leeg mogen. Hierdoor heb je betere performance en kan de drive ook beter wear levellen waardoor je SSD dus gelijkmatiger slijt. Linux 2.6.28 heeft standaard ondersteuning voor TRIM, OCZ Vertex SSD's ondersteunen TRIM vanaf firmware 1.10.For those unfamiliar with what TRIM is, it is a command the OS instructs to the drive to wipe invalid flash blocks when they are no longer needed. At present, when the OS deletes a file, only the file allocation table is updated to flag the space formerly used by the file as "unused". The problem here is that when this space is later overwritten, the SSD must first erase the blocks before it can write new data to them, which causes write performance to decrease. With TRIM support by the OS and drive, previously used empty space would no longer need to be erased before being written to.
Om TRIM in te schakelen moet je de mountoptie "discard" gebruiken. Deze kan je dus (met een komma) achter noatime zetten.
Handleiding inclusief controle: http://askubuntu.com/questions/18903/how-to-enable-trim
Cache
Voor Windows bestaat er zFlashpoint, een programma/driver welke kleine writes cached. Bij SSD's zonder eigen cache (zoals de beruchte JMicrons) schijnt dit enorm te helpen. Dit is weer een vraag van mij: kan iets dergelijks ook onder Linux, of is dit wat dirty_writeback_centisecs al doet? Ik zou voor sommige machines een Jmicron SSD overwegen als dit onder Linux kan..Oude Linuxinstallatie overhevelen
Als iemand nog tips heeft om een bestaande Linuxinstallatie over te hevelen op een netjes gealignede SSD hoor ik dat ook graag.Ongebruikte programma's/services
..die kan je beter uitzetten. Als je distro bijvoorbeeld met Tracker of Beagle komt terwijl je de functionaliteit daarvan niet gebruikt, schakel het dan uit. Het scheelt een aantal writes geeft ook wat performancewinst.Bronnen:
http://www.ocztechnologyf...um/showthread.php?t=54379
http://www.lesswatts.org/tips/disks.php
http://www.plugcomputer.o...x.php/Reduce_Flash_Writes
[ Voor 20% gewijzigd door Mentalist op 31-08-2011 00:12 ]
Verstuurd vanaf mijn Computer®