Solid State Drive tweaks: Difference between revisions

From WickyWiki
m Disable Zeitgeist
Line 4: Line 4:
* https://wiki.ubuntu.com/MagicFab/SSDchecklist
* https://wiki.ubuntu.com/MagicFab/SSDchecklist


== Prepare ==
=Prepare=


# check for ssd firmware updates
# check for ssd firmware updates
Line 11: Line 11:
Note: in a dual boot configuration with Windows 7, Windows will not boot after changing AHCI. You will need to make some changes in Windows before proceeding.
Note: in a dual boot configuration with Windows 7, Windows will not boot after changing AHCI. You will need to make some changes in Windows before proceeding.


== Format SSD ==
=Format SSD=


'''Update: it is better to have journaling enabled for possible fault correction. Skip this section.'''
'''Update: it is better to have journaling enabled for possible fault correction. Skip this section.'''
Line 35: Line 35:
</syntaxhighlight>
</syntaxhighlight>


== Access time ==
=Access time=


The "relatime" option writes the time-of-access to disk and causes unnecessary additional writes to disk. Mount volumes using the "noatime" option in stead of the "relatime" option.
The "relatime" option writes the time-of-access to disk and causes unnecessary additional writes to disk. Mount volumes using the "noatime" option in stead of the "relatime" option.
Line 52: Line 52:
</blockquote>
</blockquote>


== TRIM ==
=TRIM=


The TRIM function prepares (wipes) free space and prevents significant slowdown of writes as the drive is used.
The TRIM function prepares (wipes) free space and prevents significant slowdown of writes as the drive is used.


===Manual TRIM===
==Manual TRIM==


<syntaxhighlight lang=bash>
<syntaxhighlight lang=bash>
Line 64: Line 64:
Tip: use this tool to TRIM for example every 30 minutes using crontab. See [[MySQL#Schedule_a_backup_with_crontab]] for an example.
Tip: use this tool to TRIM for example every 30 minutes using crontab. See [[MySQL#Schedule_a_backup_with_crontab]] for an example.


===Discard TRIM ===
==Discard TRIM==


'''Note: this method will cause trimming with every deletion and can slowdown deletions.'''
'''Note: this method will cause trimming with every deletion and can slowdown deletions.'''
Line 84: Line 84:
* http://askubuntu.com/questions/18903/how-to-enable-trim
* http://askubuntu.com/questions/18903/how-to-enable-trim


== Swap ==
=Swap=
Lower the likelyness of swap
Lower the likelyness of swap
Line 91: Line 91:
sudo gedit /etc/sysctl.conf
sudo gedit /etc/sysctl.conf


# add/edit these lines
# add/edit these lines


# minimum swappiness
# minimum swappiness
vm.swappiness=0
vm.swappiness=0


# weak inode cache schrinking
# weak inode cache schrinking
vm.vfs_cache_pressure=50
vm.vfs_cache_pressure=50
</syntaxhighlight>
</syntaxhighlight>


== I/O scheduler ==
=I/O scheduler=


Change I/O scheduler strategy to "noop" (or "deadline")
Change I/O scheduler strategy to "noop" (or "deadline")
Line 109: Line 109:
cat /sys/block/sda/queue/scheduler  
cat /sys/block/sda/queue/scheduler  
</syntaxhighlight>
</syntaxhighlight>
noop anticipatory deadline [cfq]
noop anticipatory deadline [cfq]


<syntaxhighlight lang=bash>
<syntaxhighlight lang=bash>
Line 118: Line 118:


<syntaxhighlight lang=bash>
<syntaxhighlight lang=bash>
echo noop > /sys/block/sda/queue/scheduler
echo noop > /sys/block/sda/queue/scheduler
</syntaxhighlight>
</syntaxhighlight>


Reboot
Reboot


== Temporary files ==
=Temporary files=


Use in-memory disk for temporary files to reduce the number of writes to the SSD.
Use in-memory disk for temporary files to reduce the number of writes to the SSD.
Line 139: Line 139:
<syntaxhighlight lang=bash>
<syntaxhighlight lang=bash>
df
df
...
...
tmpfs xxxxxx yyyyy zzzzzz n% /tmp
tmpfs xxxxxx yyyyy zzzzzz n% /tmp
...
...
</syntaxhighlight>
</syntaxhighlight>


Line 149: Line 149:
# filter for "browser.cache.disk.parent_directory" Set the value to "/tmp"
# filter for "browser.cache.disk.parent_directory" Set the value to "/tmp"


== Other ==
=ZeitGeist=
 
Zeitgeist is an activity logger that regularly writes to a database in your home folder. The following will prevent this without removing this functionality for all users:
 
<syntaxhighlight lang=bash>
rm ~/.local/share/zeitgeist/activity.sqlite
</syntaxhighlight>
 
The file will be recreated an be almost empty, then:
 
<syntaxhighlight lang=bash>
chmod -rw ~/.local/share/zeitgeist/activity.sqlite
zeitgeist-daemon --replace
</syntaxhighlight>
 
To enable again do:
 
<syntaxhighlight lang=bash>
chmod +rw ~/.local/share/zeitgeist/activity.sqlite
zeitgeist-daemon --replace
</syntaxhighlight>
 
=Monitor I/O activity=
 
To monitor I/O activity, user left/right to change sort order:
 
<syntaxhighlight lang=bash>
sudo apt-get install iotop
sudo iotop -a
</syntaxhighlight>
 
Monitor files open for writing, in this example:
* firefox
* zeitgeist
 
<syntaxhighlight lang=bash>
sudo lsof -c firefox -c zeitgeist -r 5 | grep -e "[[:digit:]]\+w"
</syntaxhighlight>
 
==Startup problems without journal==
 
Note: not needed if you do not turn of the journal.


Did this from other Ubuntu and then it booted
Did this from other Ubuntu and then it booted

Revision as of 17:27, 18 September 2013

Prepare

  1. check for ssd firmware updates
  2. Enable SATA AHCI mode in the BIOS (if available)

Note: in a dual boot configuration with Windows 7, Windows will not boot after changing AHCI. You will need to make some changes in Windows before proceeding.

Format SSD

Update: it is better to have journaling enabled for possible fault correction. Skip this section.

Format drive as ext4, journaling disabled.

MAKE SURE WE ARE TALKING ABOUT THE RIGHT DRIVE HERE

Physical drive: "sdb", partition "sdb1"

	
sudo fdisk -l /dev/sdb | grep sectors
255 heads, 63 sectors/track, 7297 cylinders
	
sudo fdisk -H 255 -S 63 /dev/sdb
 "d" delete partition
 "n" new partition, primary, 1
 "w" to write partition table and exit
sudo mke2fs -t ext4 -O ^has_journal /dev/sdb1

Access time

The "relatime" option writes the time-of-access to disk and causes unnecessary additional writes to disk. Mount volumes using the "noatime" option in stead of the "relatime" option.

sudo cp /etc/fstab ~/fstab-backup
sudo gedit /etc/fstab

Notice the location of noatime,, do not change anything other:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /               ext4    noatime,data=writeback,errors=remount-ro 0       1

TRIM

The TRIM function prepares (wipes) free space and prevents significant slowdown of writes as the drive is used.

Manual TRIM

sudo fstrim -v /

Tip: use this tool to TRIM for example every 30 minutes using crontab. See MySQL#Schedule_a_backup_with_crontab for an example.

Discard TRIM

Note: this method will cause trimming with every deletion and can slowdown deletions.

sudo gedit /etc/fstab

Notice the location of discard,, do not change anything other:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /               ext4    noatime,discard,data=writeback,errors=remount-ro 0       1

Reboot. To test if TRIM is working look here:

Swap

Lower the likelyness of swap

	
sudo gedit /etc/sysctl.conf

# add/edit these lines

# minimum swappiness
vm.swappiness=0

# weak inode cache schrinking
vm.vfs_cache_pressure=50

I/O scheduler

Change I/O scheduler strategy to "noop" (or "deadline")

Note: there are alternatives to add this option to grub or to install a "sysutils" package

cat /sys/block/sda/queue/scheduler

noop anticipatory deadline [cfq]

	
sudo gedit /etc/rc.local

Add these lines before exit 0 for drive "sda"

	
echo noop > /sys/block/sda/queue/scheduler

Reboot

Temporary files

Use in-memory disk for temporary files to reduce the number of writes to the SSD.

sudo gedit /etc/fstab

Add after the last line (exact text)

tmpfs   /tmp  tmpfs  nodev,nosuid,noexec,mode=1777  0 0

After reboot, using df you should see a line like

df
...
tmpfs xxxxxx yyyyy zzzzzz n% /tmp
...

Move firefox cache to the earlier created /tmp

  1. in firefox go to url "about:config"
  2. filter for "browser.cache.disk.parent_directory" Set the value to "/tmp"

ZeitGeist

Zeitgeist is an activity logger that regularly writes to a database in your home folder. The following will prevent this without removing this functionality for all users:

rm ~/.local/share/zeitgeist/activity.sqlite

The file will be recreated an be almost empty, then:

chmod -rw ~/.local/share/zeitgeist/activity.sqlite
zeitgeist-daemon --replace

To enable again do:

chmod +rw ~/.local/share/zeitgeist/activity.sqlite
zeitgeist-daemon --replace

Monitor I/O activity

To monitor I/O activity, user left/right to change sort order:

sudo apt-get install iotop
sudo iotop -a

Monitor files open for writing, in this example:

  • firefox
  • zeitgeist
sudo lsof -c firefox -c zeitgeist -r 5 | grep -e "[[:digit:]]\+w"

Startup problems without journal

Note: not needed if you do not turn of the journal.

Did this from other Ubuntu and then it booted

sudo tune2fs -o journal_data_writeback /dev/sdb1

Moved aMule and Vuze folders to Data drive, NB: aMule will reset the folder when it is not found