- Első lépésként érdemes megnézni, hogy a partíciók jól lettek-e létrehozva (partition alignment megfelelő-e), de ahogy láttam a Crunchbang telepítő erre figyel, és MSDOS partíciós táblánál is (nem csak GUID Partition Table-nél, ahogy fő forrásom is írja) az első szektor 2048-nál van, ami megfelelő. Erre azért van szükség röviden, mert az SSD másképpen működik, mint a HDD: ha egy partíció nem a page size méretével osztható határon kezdődik, akkor az SSD-nek egy lap írása helyett 2 lapot kell írnia, így a sebesség és az élettartam is csökken. 25nm-es gyártási technológiánál a page size 8kB, erase block size 2MB, egy szektor 512B így kiszámolható, hogy megfelelően van eltolva a partíció.
- Lépés a TRIM funkció bekapcsolása. Ehhez először is 2.6.33-as vagy újabb kernellel kell rendelkezünk. Röviden a TRIM-ről: HDD esetén, ha egy fájl letörlünk, akkor az operációs rendszer az érintett szektorokat megjelöli törölhetőként és később újabb adat kiírásakor felülíródnak a korábban törölt adatok. Az SSD-nél viszont más a helyzet, mert új adatot csak üres lapokra lehet írni, törléskor azonban az operációs rendszer csak megjelöli a szektorokat törölhetőként, így azok nem tűnnek el, megjelölve továbbra is ott vannak az SSD-n. Újabb adat írásakor az erase blocknak megfelelő nagyságú részt be kell olvasni, kiírni gyorsítótárba, törölni a szükségtelen lapokat, visszaírni, majd az üres helyre az új adatokat is beírni. A TRIM egy SATA utasítás, melyet az operációs rendszer hív meg, ilyenkor ténylegesen törlődnek a szükségtelen lapok az SSD-ről. Bekapcsolásával sebességnövekedést érhetünk el.
Ehhez az /etc/fstab fájlba kell beírnunk a discard attribútumot:
# / was on /dev/sda1 during installation
UUID=8a159c3a-0867-431d-a7a1-e5211fc3a8d9 / ext4 discard 0 1
# /home was on /dev/sda5 during installation
UUID=fc76149a-8a7d-43eb-a676-56ae599c440a /home ext4 defaults,user_xattr,discard 0 0 2
- Az előző lépéshez hasonlóan az /etc/fstab fájlban érdemes beállítani a noatime attribútumot is. Így a rendszer nem írja ki fájloknál az utolsó hozzáférés idejét, ezzel rengeteg erőforrást megspórolva.
# / was on /dev/sda1 during installation
UUID=8a159c3a-0867-431d-a7a1-e5211fc3a8d9 / ext4 noatime,discard 0 1
# /home was on /dev/sda5 during installation
UUID=fc76149a-8a7d-43eb-a676-56ae599c440a /home ext4 defaults,noatime,user_xattr,discard 0 0 2
- Az alapértelmezett IO ütemező Crunchbang-ben a CFQ (Complete Fair Queueing Scheduler), mely a HDD olvasó/író fej helyzetét is figyelembe veszi működése során. Az SSD-nél ennek nincsen értelme, így érdemes átállítani az ütemezőt Deadline, vagy Noop ütemezésre:
printf 'ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"' | sudo tee /etc/udev/rules.d/60-ssd-scheduler.rules
- Néhány könyvtárat, amelyekbe nagyon gyakran történik írás, nem túl jó az SSD-n tárolni, hogy ne csökkenjen az SSD élettartama számottevően. Ezeket a könyvtárakat átmeneti fájlrendszerként érdemes felcsatolni, így ezek soha nem íródnak ki a lemezre, újraindításkor tartalmuk törlődik. Felcsatolásukhoz a /etc/fstab fájlba írjuk a következőket:
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/spool tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
Én a két tmp könyvtárat, a napló fájlok könyvtárát, és a futásra váró folyamatok könyvtárát helyeztem át a memóriába. Ezzel a konstrukcióval érdemes vigyázni, mert ha elfogy a hely a memóriából, akkor a swap-et fogja használni a rendszer, valamint egyes programok nem tudnak elindulni, ha nincsenek meg a /var/log-ban a saját mappáik.
Egy megoldás ezen mappák létrehozására, ha a rendszer indulásakor elkészítjük ezeket egy init.d szkriptben. Egy majdnem jó megoldás található itt, azonban hiányoznak a függőség alapú bootolást segítő LSB mezők (itt írtam róluk). Helyesen:
sudo touch /etc/init.d/make-tmpfs-dirs
sudo gedit /etc/init.d/make-tmpfs-dirs
másoljuk be a szkriptet:
#!/bin/sh
### BEGIN INIT INFO
# Provides: make-tmpfs-dirs
# Required-Start:
# Required-Stop:
# Default-Start: 2
# Default-Stop:
# Short-Description: Create temporary directories on tmpfs.
# Description: Create temporary directories for Debconf, Apache2, GDM, ATD
### END INIT INFO
# Debconf
mkdir /var/cache/debconf
# Apache2
sudo mkdir /var/log/apache2
sudo chown root:adm /var/log/apache2
sudo chmod 750 /var/log/apache2
# GDM
sudo mkdir -p /var/log/gdm
# ATD
sudo mkdir -p /var/spool/cron/atjobs
exit 0
majd állítsuk be a jogosultságokat, és a megfelelő runlevel-t:
sudo chmod u+x /etc/init.d/make-tmpfs-dirs
cd /etc/rc2.d
sudo ln -s ../init.d/make-tmpfs-dirs S02make-tmpfs-dirs
- A gyakori írások nem túl jók az SSD-nek, általában egy böngésző cache-eléskor legtöbbször nagyon kis fájlokat ír ki. Ezt is érdemes a memóriába áthelyezni, mert ezzel még a böngészést is gyorsíthatjuk.
Firefox-ban a következőt kell tennünk:
- Írjuk be a böngésző címsorába a következőt: about:config
- Jobb klikk -> New -> String
- Névnek írjuk be a következőt: browser.cache.disk.parent_directory
- Értéknek pedig: /tmp
A további SSD optimalizációval kapcsolatos eredményekről is itt fogok írni.
Szia,
VálaszTörlésJól összeszedet leírás :)
Egy apróság amit az fstab részhez betehetnél:
nodiratime - opció, h a könyvtárak elérési idejét se módosítsa
body
szia,
Törlésörülök, hogy valaki hasznát vette rajtam kívül :)
Az fstab-os résznél, pedig nincsen szükség a "nodiratime" opcióra, mert a "noatime" erősebb feltétel és nem csak a könyvtárak, hanem a fájlok hozzáférési idejét sem írja ki, így nagyobb teljesítménynövekedés érhető el simán "noatime" opcióval! :)
bizonyítékként érdemes megnézni az fs/inode.c fájlt, amiben a kérdéses függvény van, ami módosítja a hozzáférési időt:
void touch_atime(struct vfsmount *mnt, struct dentry *dentry)
{
/* ... */
if (inode->i_flags & S_NOATIME)
return;
if (IS_NOATIME(inode))
return;
if ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode))
return;
látszik, hogy ha a "noatime" van beállítva már return-öl és a "nodiratime" opciót nem is vizsgálja :)
Szia!
VálaszTörlésChromiumnál hogy lehet a böngésző-cachet átrakni?
Szia!
TörlésChromium a ~/.cache/chromium/ mappában tartja a böngésző cache-t, így például azt is fel lehet csatolni az /etc/fstab fájlban egy Tmpfs fájlrendszerként:
tmpfs /home//.cache tmpfs noatime,nodev,nosuid,size=400M 0 0
A cache méretét a size opcióval állíthatod be.
Sok sikert!
Szia!
VálaszTörlés/boot/efi particionak lehet/kell adni discard es noatime opciokat?
Zsenialis az leiras. Koszonet erte!
VálaszTörlés