|
@@ -1,5 +1,8 @@
|
|
|
|
+.. _swap_numa:
|
|
|
|
+
|
|
|
|
+===========================================
|
|
Automatically bind swap device to numa node
|
|
Automatically bind swap device to numa node
|
|
--------------------------------------------
|
|
|
|
|
|
+===========================================
|
|
|
|
|
|
If the system has more than one swap device and swap device has the node
|
|
If the system has more than one swap device and swap device has the node
|
|
information, we can make use of this information to decide which swap
|
|
information, we can make use of this information to decide which swap
|
|
@@ -7,15 +10,16 @@ device to use in get_swap_pages() to get better performance.
|
|
|
|
|
|
|
|
|
|
How to use this feature
|
|
How to use this feature
|
|
------------------------
|
|
|
|
|
|
+=======================
|
|
|
|
|
|
Swap device has priority and that decides the order of it to be used. To make
|
|
Swap device has priority and that decides the order of it to be used. To make
|
|
use of automatically binding, there is no need to manipulate priority settings
|
|
use of automatically binding, there is no need to manipulate priority settings
|
|
for swap devices. e.g. on a 2 node machine, assume 2 swap devices swapA and
|
|
for swap devices. e.g. on a 2 node machine, assume 2 swap devices swapA and
|
|
swapB, with swapA attached to node 0 and swapB attached to node 1, are going
|
|
swapB, with swapA attached to node 0 and swapB attached to node 1, are going
|
|
-to be swapped on. Simply swapping them on by doing:
|
|
|
|
-# swapon /dev/swapA
|
|
|
|
-# swapon /dev/swapB
|
|
|
|
|
|
+to be swapped on. Simply swapping them on by doing::
|
|
|
|
+
|
|
|
|
+ # swapon /dev/swapA
|
|
|
|
+ # swapon /dev/swapB
|
|
|
|
|
|
Then node 0 will use the two swap devices in the order of swapA then swapB and
|
|
Then node 0 will use the two swap devices in the order of swapA then swapB and
|
|
node 1 will use the two swap devices in the order of swapB then swapA. Note
|
|
node 1 will use the two swap devices in the order of swapB then swapA. Note
|
|
@@ -24,32 +28,39 @@ that the order of them being swapped on doesn't matter.
|
|
A more complex example on a 4 node machine. Assume 6 swap devices are going to
|
|
A more complex example on a 4 node machine. Assume 6 swap devices are going to
|
|
be swapped on: swapA and swapB are attached to node 0, swapC is attached to
|
|
be swapped on: swapA and swapB are attached to node 0, swapC is attached to
|
|
node 1, swapD and swapE are attached to node 2 and swapF is attached to node3.
|
|
node 1, swapD and swapE are attached to node 2 and swapF is attached to node3.
|
|
-The way to swap them on is the same as above:
|
|
|
|
-# swapon /dev/swapA
|
|
|
|
-# swapon /dev/swapB
|
|
|
|
-# swapon /dev/swapC
|
|
|
|
-# swapon /dev/swapD
|
|
|
|
-# swapon /dev/swapE
|
|
|
|
-# swapon /dev/swapF
|
|
|
|
-
|
|
|
|
-Then node 0 will use them in the order of:
|
|
|
|
-swapA/swapB -> swapC -> swapD -> swapE -> swapF
|
|
|
|
|
|
+The way to swap them on is the same as above::
|
|
|
|
+
|
|
|
|
+ # swapon /dev/swapA
|
|
|
|
+ # swapon /dev/swapB
|
|
|
|
+ # swapon /dev/swapC
|
|
|
|
+ # swapon /dev/swapD
|
|
|
|
+ # swapon /dev/swapE
|
|
|
|
+ # swapon /dev/swapF
|
|
|
|
+
|
|
|
|
+Then node 0 will use them in the order of::
|
|
|
|
+
|
|
|
|
+ swapA/swapB -> swapC -> swapD -> swapE -> swapF
|
|
|
|
+
|
|
swapA and swapB will be used in a round robin mode before any other swap device.
|
|
swapA and swapB will be used in a round robin mode before any other swap device.
|
|
|
|
|
|
-node 1 will use them in the order of:
|
|
|
|
-swapC -> swapA -> swapB -> swapD -> swapE -> swapF
|
|
|
|
|
|
+node 1 will use them in the order of::
|
|
|
|
+
|
|
|
|
+ swapC -> swapA -> swapB -> swapD -> swapE -> swapF
|
|
|
|
+
|
|
|
|
+node 2 will use them in the order of::
|
|
|
|
+
|
|
|
|
+ swapD/swapE -> swapA -> swapB -> swapC -> swapF
|
|
|
|
|
|
-node 2 will use them in the order of:
|
|
|
|
-swapD/swapE -> swapA -> swapB -> swapC -> swapF
|
|
|
|
Similaly, swapD and swapE will be used in a round robin mode before any
|
|
Similaly, swapD and swapE will be used in a round robin mode before any
|
|
other swap devices.
|
|
other swap devices.
|
|
|
|
|
|
-node 3 will use them in the order of:
|
|
|
|
-swapF -> swapA -> swapB -> swapC -> swapD -> swapE
|
|
|
|
|
|
+node 3 will use them in the order of::
|
|
|
|
+
|
|
|
|
+ swapF -> swapA -> swapB -> swapC -> swapD -> swapE
|
|
|
|
|
|
|
|
|
|
Implementation details
|
|
Implementation details
|
|
-----------------------
|
|
|
|
|
|
+======================
|
|
|
|
|
|
The current code uses a priority based list, swap_avail_list, to decide
|
|
The current code uses a priority based list, swap_avail_list, to decide
|
|
which swap device to use and if multiple swap devices share the same
|
|
which swap device to use and if multiple swap devices share the same
|