Hackviking He killed Chuck Norris, he ruled dancing so he took up a new hobby…

9Mar/160

Odroid: Swap on USB-stick

Swap is used when the kernel runs out of memory and need to swap less used information to the disc to make space for information currently in use. In a good setup the swap will never be used but if it's needed and not existing it will make processes crash.

I have just started out testing BitTorrent Sync (btsync) on my Odroid-C1 and noticed that all the memory was allocated more or less straight away after starting the btsync service. So just to be safe during my test, to avoid crashes, I added a 8Gb USB stick to use for swap space. You can of course use the SD-card but that will take up space needed for the system as well as shorten the life of your SD-card.

First we check how much swap we currently have.

#free -m
total used free shared buffers cached
Mem: 836 772 64 14 24 525
-/+ buffers/cache: 222 614
Swap: 0 0 0

Then we plug in the usb stick and run dmesg to find the device.

[16573.684715@3] usb-storage 1-1.1:1.0: USB Mass Storage device detected
[16573.686215@3] scsi0 : usb-storage 1-1.1:1.0
[16574.907717@3] scsi 0:0:0:0: Direct-Access PNY USB 2.0 FD 1100 PQ: 0 ANSI: 4
[16574.909157@0] sd 0:0:0:0: [sda] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB)
[16574.909858@0] sd 0:0:0:0: [sda] Write Protect is off
[16574.909871@0] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[16574.910478@0] sd 0:0:0:0: [sda] No Caching mode page found
[16574.910518@0] sd 0:0:0:0: [sda] Assuming drive cache: write through
[16574.923530@0] sd 0:0:0:0: [sda] No Caching mode page found
[16574.923581@0] sd 0:0:0:0: [sda] Assuming drive cache: write through
[16574.933317@1] sda: sda1
[16574.937732@1] sd 0:0:0:0: [sda] No Caching mode page found
[16574.937776@1] sd 0:0:0:0: [sda] Assuming drive cache: write through
[16574.944985@2] sd 0:0:0:0: [sda] Attached SCSI removable disk

So here we can see the 8GB usb-stick plugged in and picked up. So now we need to partition it to use as swap. We see that it's recognized as /dev/sda.

root@BTSYNCOD:/# fdisk /dev/sda

Command (m for help): d
Selected partition 1

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-15826943, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-15826943, default 15826943):
Using default value 15826943

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

As you can see we use the default answer on all questions. Then we create the swap on the partition.

root@BTSYNCOD:~# mkswap /dev/sda1
Setting up swapspace version 1, size = 7912444 KiB
no label, UUID=81a92281-cc1d-4687-a0c9-13dc234d1657

Here we make a note of, or copy, the UUID that we need to make the swap mount on boot in fstab. We then use nano /etc/fstab to edit the mount table and add:

UUID</span><span class="crayon-o">=</span><span class="crayon-v">b69cf517</span><span class="crayon-o">-</span><span class="crayon-cn">5d6e</span><span class="crayon-o">-</span><span class="crayon-cn">4388</span><span class="crayon-o">-</span><span class="crayon-v">bb69</span><span class="crayon-o">-</span><span class="crayon-e">e24d5cb1b338   </span><span class="crayon-e">none    </span><span class="crayon-e">swap    </span><span class="crayon-i">sw</span><span class="crayon-h">    </span><span class="crayon-cn">0</span><span class="crayon-h">   </span><span class="crayon-cn">0

Of course you need to replace UUID=b69cf517-5d6e-4388-bb69-e24d5cb1b338 with your own UUID. Then we can enable the swap.

swapon /dev/sda1

As I wrote in the intro this is just a fail safe. If the system is forced to use the swap it will decrease performance and my application should make use of a machine with more memory. This has been running for more then 24h now and no swap space is used so far.

Posted by Kristofer Källsbo

Comments (0) Trackbacks (0)

No comments yet.


Leave a Reply

No trackbacks yet.