1. 程式人生 > >Linux 記憶體子系統常見引數以及調優

Linux 記憶體子系統常見引數以及調優

  • 調優的幾個模組:
    • 程序管理,CPU;
    • 記憶體調優,
    • IO調優
    • 檔案系統;
    • 網路子系統;
  • 調優思路:效能指標,定位瓶頸,;
  • 系統調優是一種black art;
  • rhel6提供的效能評估的軟體:
    • SystemTap:用於觀察系統上面每一個系統呼叫或者應用程式和核心互動時的狀態;
    • Oprofile:表示用於進行系統評估的工具;
    • Valgrind:是一個非常強大的記憶體檢測工具,以及對於快取的使用率的一個工具;
    • Perf:也是一個系統性能評估工具
  • 記憶體的子系統元件:
    • slab allocator:
    • buddy system:
    • kswapd:
    • pdflush:
    • mmu:
  • 記憶體子系統的虛擬化
  • 將程序地址成為PA,虛擬主機的地址成為HA,實體地址稱為MA,虛擬機器對於地址的轉換通常需要從PA-->HA-->MA,效率低下,大多數虛擬機器都是需要這樣進行轉換的,支援硬體虛擬化的CPU,可以通過PA直接轉換到MA;
  • 現在的支援硬體虛擬化的CPU都支援shadow Page,通過提供虛擬的MMU ,Guest OS在需要轉換時,通過硬體MMU晶片,OS自動的同步完成HA-->MA的轉換,通過這種機制可以一步完成從PA-->MA的轉換;

TLB:TLB(Translation Lookaside Buffer)轉換檢測緩衝區是一個記憶體管理單元,用於改進虛擬地址到實體地址轉換速度的快取,TLB

是一個小的,虛擬定址的快取,其中每一行都儲存著一個由單個PTE(Page Table Entry,頁表項)組成的塊。如果沒有TLB,則每次取資料都需要兩次訪問記憶體,即查頁表獲得實體地址和取資料。

  • 提高TLB效能
  • Hugetblfs:大表頁檔案系統,可以使用多種不同大小的頁面,對應的檔案系統是HugeFS,
    這裡寫圖片描述
  • 上面的引數表示的含義是大頁面的大小為2M,但是總數為0,表示沒有啟用;
  • 啟用大頁面的方法:
  • 1.通過更改配置檔案
[email protected]:~# vim /etc/sysctl.conf 
vm.nr_hugepages=n;
上面的方式等價於:
sysctl -w vm.nr_hugepages=10
  • 2.或者通過向核心傳遞引數的方式進行
hugepages=n
  • 更改之後進行檢視
    這裡寫圖片描述

  • 這些大頁面可以被某些應用程式使用;通常來說某些應用程式是可以自動使用大頁面的,例如sshm mysqld,如果需要手動的指定某些應用程式使用大頁面,可以通過掛載的方式實現;

[email protected]:~# mkdir /hugepages
[email protected]:~# mount -t hugetlbfs none /hugepages/
[email protected]:~# ls /hugepages/
  • 這個地址空間是不允許使用者直接使用的;

  • 對於MysqlInnoDB儲存引擎存在一個引數InnoDB_Buffer,這個空間主要是用來快取InnoDB的索引檔案,需要的空間特別大,這個建議使用大頁面,可以有效的提高效能;

  • 檢視系統呼叫

  • starce用來檢視一個程序到底是如何執行的,並且執行了那些系統呼叫
    這裡寫圖片描述

  • 追蹤某個命令執行的系統呼叫,輸出的主要是摘要資訊;
    這裡寫圖片描述

  • 通過-i選項檢視系統呼叫資訊

[email protected]:~# strace -i   cat /etc/fstab 
[00007f4b1b1d3607] execve("/bin/cat", ["cat", "/etc/fstab"], [/* 19 vars */]) = 0
[00007fa5502f1879] brk(NULL)            = 0x55e661629000
[00007fa5502f25a7] access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
[00007fa5502f269a] mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa5504f9000
[00007fa5502f25a7] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
[00007fa5502f2547] open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
[00007fa5502f24d2] fstat(3, {st_mode=S_IFREG|0644, st_size=121277, ...}) = 0
[00007fa5502f269a] mmap(NULL, 121277, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fa5504db000
[00007fa5502f2647] close(3)             = 0
[00007fa5502f25a7] access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
[00007fa5502f2547] open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
[00007fa5502f2567] read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\3\2\0\0\0\0\0"..., 832) = 832
[00007fa5502f24d2] fstat(3, {st_mode=S_IFREG|0755, st_size=1689360, ...}) = 0
[00007fa5502f269a] mmap(NULL, 3795360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fa54ff3a000
[00007fa5502f2737] mprotect(0x7fa5500cf000, 2097152, PROT_NONE) = 0
[00007fa5502f269a] mmap(0x7fa5502cf000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x195000) = 0x7fa5502cf000
[00007fa5502f269a] mmap(0x7fa5502d5000, 14752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fa5502d5000
[00007fa5502f2647] close(3)             = 0
[00007fa5502f269a] mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa5504d9000
[00007fa5502d9bb8] arch_prctl(ARCH_SET_FS, 0x7fa5504d9700) = 0
[00007fa5502f2737] mprotect(0x7fa5502cf000, 16384, PROT_READ) = 0
[00007fa5502f2737] mprotect(0x55e65fc41000, 4096, PROT_READ) = 0
[00007fa5502f2737] mprotect(0x7fa5504fc000, 4096, PROT_READ) = 0
[00007fa5502f2717] munmap(0x7fa5504db000, 121277) = 0
[00007fa55001ac69] brk(NULL)            = 0x55e661629000
[00007fa55001ac69] brk(0x55e66164a000)  = 0x55e66164a000
[00007fa54ff64e9f] open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
[00007fa550015062] fstat(3, {st_mode=S_IFREG|0644, st_size=3468304, ...}) = 0
[00007fa55001e3ca] mmap(NULL, 3468304, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fa54fbeb000
[00007fa54ff64f51] close(3)             = 0
[00007fa550015062] fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 0), ...}) = 0
[00007fa550015470] open("/etc/fstab", O_RDONLY) = 3
[00007fa550015062] fstat(3, {st_mode=S_IFREG|0644, st_size=196, ...}) = 0
[00007fa55001976d] fadvise64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
[00007fa55001e3ca] mmap(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa5504b7000
[00007fa550015690] read(3, "# /dev/sdd1\nUUID=4cc08fc5-b4e5-4"..., 131072) = 196
[00007fa5500156f0] write(1, "# /dev/sdd1\nUUID=4cc08fc5-b4e5-4"..., 196# /dev/sdd1
UUID=4cc08fc5-b4e5-40f3-8545-9746f8ba0b0e	/         	ext4      	rw,relatime,data=ordered	0 1

/swapfile none swap defaults 0 0

cpuset          /cpusets         cpuset defaults  0   0
) = 196
[00007fa550015690] read(3, "", 131072)  = 0
[00007fa55001e467] munmap(0x7fa5504b7000, 139264) = 0
[00007fa550015cb0] close(3)             = 0
[00007fa54ffaba1b] close(1)             = 0
[00007fa54ffaba1b] close(2)             = 0
[00007fa54fff25d8] exit_group(0)        = ?
[????????????????] +++ exited with 0 +++
  • strace COMMAND:檢視命令的系統呼叫;
  • strace -p PID:檢視已經啟動的程序的syscall;
  • -c:只輸出概括資訊;
  • -o FILE:將追蹤結果儲存至檔案中,用來參考;
  • 使用這個命令是用於追蹤LNMP或者其他服務將大量的時間用在哪些方面;通常還可以用於鎖競爭,用於定位IO故障;
  • 記憶體的使用策略
  • 1.儘量降低小記憶體物件的開銷,可以使用slab cache
    這裡寫圖片描述
  • slab cache通常是事先在記憶體中劃分出來的片段,通常這些是鏈式結構,並且每個kmem_cache分為三個段slab_full slab_partial slabs_empty;
  • 檢視slab的資訊
[email protected]:~#  cat /proc/slabinfo 
slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
xfs_dqtrx              0      0    528    7    1 : tunables   54   27    8 : slabdata      0      0      0
xfs_rui_item           0      0    672    6    1 : tunables   54   27    8 : slabdata      0      0      0
xfs_rud_item           0      0    152   26    1 : tunables  120   60    8 : slabdata      0      0      0
xfs_ili                0      0    168   24    1 : tunables  120   60    8 : slabdata      0      0      0
xfs_inode             15     20    960    4    1 : tunables   54   27    8 : slabdata      5      5      0
xfs_buf_item           0      0    248   16    1 : tunables  120   60    8 : slabdata      0      0      0
xfs_da_state           0      0    480    8    1 : tunables   54   27    8 : slabdata      0      0      0
bio-4                 32     36    320   12    1 : tunables   54   27    8 : slabdata      3      3      0
kvm_async_pf           0      0    136   30    1 : tunables  120   60    8 : slabdata      0      0      0
kvm_vcpu               0      0  19264    1    8 : tunables    8    4    0 : slabdata      0      0      0
kvm_mmu_page_header      0      0    168   24    1 : tunables  120   60    8 : slabdata      0      0      0
pte_list_desc          0      0     32  124    1 : tunables  120   60    8 : slabdata      0      0      0
fuse_request           0      0    400   10    1 : tunables   54   27    8 : slabdata      0      0      0
fuse_inode             1      9    832    9    2 : tunables   54   27    8 : slabdata      1      1      0
ext4_groupinfo_4k    459    476    144   28    1 : tunables  120   60    8 : slabdata     17     17      0
ext4_inode_cache   23316  23358   1080    3    1 : tunables   24   12    8 : slabdata   7786   7786      0
ext4_allocation_context      8     32    128   32    1 : tunables  120   60    8 : slabdata      1      1      0
ext4_extent_status   4503   9999     40   99    1 : tunables  120   60    8 : slabdata    101    101      0
  • 對於上面顯示的內容是存在tunables,表示這個 slab是可以進行調整的
  • 對於記憶體物件來說都是不一樣的,所以分配的slab的大小也不應該是一樣的,所以每一種物件可能需要準備多個slab空間;
  • 所以使用slab應該是提前申請,對於某個物件被刪除slab並不會被刪除,而是會被清空,留給以後使用;
  • 2.降低或者延遲慢速子系統的時間:
  • 檔案系統元資料filesystem medata:通過提供 buffer 或者cache,將檔案元資料直接快取在buffer;;
  • DIsk IO:通過提供page cache;
  • Interprocess communication通過提供shared memory;
  • Network IO:通過提供buffer, cache, arp cache,connection tracking;
  • slab_cache的引數:
  • 檢視
    這裡寫圖片描述
  • slabtop
    這裡寫圖片描述
  • 通常來說dentry,和ext4_innodb的使用量是比較大的,這個使用百分比在deepin上面顯示的好像不正常,手動來算兩個
    這裡寫圖片描述
  • 這個值建議對於某些服務根據上面的情況來調整變大
    這裡寫圖片描述;
  • 通過echo命令來調整上面的引數:
[email protected]:~# echo "cache_name limit batchcount shared" > /proc/slabinfo 
  • limit:表示可以被每個CPU快取的最大object數目
  • batchcount:全域性快取物件中最多允許多少個在某個CPU快取為空時,進行傳送的個數;
  • shared:在對稱多處理器架構中,允許多少個快取物件;
[email protected]:~#  echo 'ext4_inode_cache 54 27 8' > /proc/slabinfo
  • 再次檢視這個值就已經改變
    這裡寫圖片描述

  • 關於vm_min_free_kbytes:

    • 這個引數是用於定義最少需要空閒出來多少記憶體,用於確保記憶體不會被使用完,而導致系統崩潰;這個引數在硬碟裝置比較差,並且CPU效能也比較差時,需要考慮使用,通常是調小這個引數;
    • 這個引數可以用於減少請求分頁的響應時間;
    • 這段memory對於其他的應用程式不可用
      這裡寫圖片描述
  • vm.overcommit_memory:

  • 用於防止記憶體的過量使用,可以在swap的程度上面允許記憶體的一部分過量使用;

  • 0:表示heuristic overcommit:表示啟發式過量,用於自動決定記憶體過量使用的時機,以及大小;

  • 1:表示always overcommit,表示一直允許過量使用,在資料庫伺服器上面,儘可能的不要使用swap,也就是不要使用這個選項,但是在hadoop對於記憶體的量要求大,但是速度要求不強;

  • 2:表示使用一部分的實體記憶體加上一部分的swap記憶體,這個大於的百分比是可以自行進行定義的overcommit_ratio百分比;並且建議不要超過50%;這個範圍在確定的時候,不應該超過實體記憶體和swap分割槽的大小,通常計算方法是swap+RAM*raito;

  • 為了防止實體記憶體不能夠充分被使用,需要使用:

    • 1.swapRAM一樣大,並且swapiness=0;
    • 2.或者設定overcommit_memory=2,並且設定,overcommit_ratio=100;,並且還需要設定swappiness=0;
      這裡寫圖片描述;
  • 核心中的OOMK Out Of Memory Kill殺手,當應用程式使用的記憶體佔據了核心空間的記憶體的時候,核心就會優先殺死那些佔用記憶體空間最多的程序,無論是否重要;

  • 當然上面這個殺死進行的方式是可以進行定義的,核心維護了對於所有程序的一個評分,用於確定那個程序優先被殺死;
    這裡寫圖片描述

  • 1這個程序肯定是不能夠優先被殺死的
    這裡寫圖片描述

  • 換一個程序來檢視
    這裡寫圖片描述

  • 好像預設的都是一樣的
    這裡寫圖片描述

  • 調整網路IO

  • 預設情況下,arp的解析結果快取在/proc/net/arp檔案中 ,預設情況下這個檔案裡面可以快取512個條目,硬限制是1024個條目;一旦超出軟限制,核心子系統Garbage collection會自動移除一些過期的條目
    這裡寫圖片描述

  • 可以通過命令ip neighbor list顯示已經快取的條目
    這裡寫圖片描述

  • 如果需要清空某個裝置上面的快取條目

[email protected]:~# ip neigh flush dev enp0s25
  • net.ipv4.neigh.default.gc_thresh1=128:當裡面的快取條目少於128時,garbage collection不會進行任何操作;

  • net.ipv4.neigh.default.gc_thresh2=512:表示軟限制,可以允許超過,當選項net.ipv4.neigh.default.gc_interval啟用時,清除超過硬限制清理時間的條目,超過軟限制的做多不允許超過5秒鐘;

  • net.ipv4.neigh.default.gc_thresh1=1024:表示硬限制,這個值是不允許超過的;

  • net.ipv4.neigh.default.gc_interval,表示每隔多長時間來檢查一次,並且進行清理;

  • PAGE CACHE

  • 頁快取的主要目的使用來降低磁碟快取的,也就是儘量將檔案放在記憶體中進行讀,主要是用來加速讀操作的;

  • page cache降低IO請求:

    • Directory Read :目錄讀取;
    • Reading and Write regular file: 讀寫[表示對於檔案內容的修改]普通檔案;
    • 可以加快讀和寫塊裝置;
    • 通常還是可以使用記憶體對映的mmap;
  • vm.lowmem_reserve_ratio

  • 表示記憶體中為page Cache預留多大的空間;

  • vfs_cache_pressure

  • 用於控制核心控制記憶體裝置中那些被用於快取目錄以及inode物件的的趨勢,一般來說為了加快訪問,這些內容是不應該回收的;

  • 100表示在dentries innodespagecache swapcache更加公平的在兩者之家選擇回收策略,如果減少這個值,表示更加傾向於保留dentryinnode cache;

  • 0:表示不會依賴於記憶體的使用情況來回收dentry以及innode,這樣容易導致記憶體溢位;

  • 1-->99:傾向於不回收dentry以及innode;

  • >100:表示更加傾向於回收dentry以及innode;
    這裡寫圖片描述

  • page-cluster

  • 表示頁面組,專業說法是頁簇;表示在將資料需要存放在交換頁面上面的時候,每一次拿出多少個頁面放在交換記憶體上面去;如果這個值為n,那麼表示的含義是每次交換出2^n個,一般來收只有在系統頻繁使用交換分割槽的時候,需要調大這個值,並且不應該大於4

  • 這個引數需要在虛擬化時,需要調大這個值;
    這裡寫圖片描述

  • zone_reclaim_mode

  • 表示在記憶體回收的模型,表示在進行記憶體回收時,更加傾向於回收哪一段的記憶體;

  • 1:表示開啟記憶體回收的功能,具體的回收策略交給核心進行限定;

  • 2:表示回收寫操作產生的髒頁;

  • 4:表示回收swap頁面;
    這裡寫圖片描述

  • anonymous page

  • 表示匿名頁,這裡面通常包含:

  • 1.程式自身產生的資料,陣列和堆裡面的資料;

  • 2.通常匿名記憶體區域也稱為匿名頁;

  • 3.程式私有記憶體頁面對映的髒頁面;

  • 4.程序間通訊的共享記憶體頁面;

  • Anonymous page的計算方法:anonymous pages = RSS[實際記憶體集合] - Shared[共享記憶體集合];

  • 通常來說匿名頁面是不能夠被交換出去的;
    這裡寫圖片描述
    這裡寫圖片描述

  • 對於程序間通訊的調優

  • 檢視當前的IPC的限定
    這裡寫圖片描述

  • min seg size:表示每一個段最小使用的位元組數;

  • 通常來說使用較多的通訊機制是shared memory以及Messages;

  • ipcrm:如果某個程序使用程序間通訊陷入睡眠,無法被喚醒,使用這個命令可以移除一個訊息佇列;

  • shared memory的調優:

  • kernel.shmmni:表示在全系統內部允許使用多少個共享記憶體段;,資料庫伺服器上面經常需要調整這個引數,這個值通常需要被調大;
    這裡寫圖片描述

  • kernel.shmall:表示的是全系統範圍內,一次可以最大為共享記憶體使用的最大頁面數;
    這裡寫圖片描述

  • this should be at least kernel.mmax/PAGE_SIZE;

  • kernel.shamax:共享記憶體段可以被建立的最大大小
    這裡寫圖片描述

  • 關於msgmnb:

  • kernel.msgmnb:表示單個訊息佇列的最大位元組數;
    這裡寫圖片描述

  • kernel.msgmni:系統級別,表示訊息佇列個數的的上限;
    這裡寫圖片描述

  • kernel.msgmax: 表示訊息佇列中,單個訊息的上限,單位是位元組;

  • 一般來說這些值是需要調大的,對於上面的記憶體空間是不能夠被交換出去的;

  • 記憶體空間的清寫

  • 記憶體空間的清寫是交給pdflush這個執行緒來完成的,這個執行緒是按照需求進行啟動的,當出現需要進行磁碟刷寫的時候,這個執行緒是會自動啟動的,這個執行緒一般最少是兩個;
    這裡寫圖片描述

  • 一般來說核心會自動優化,一塊磁碟裝置是一個執行緒;這塊進行修改,出現了許可權不夠的錯誤,所以不建議手動進行修改;
    這裡寫圖片描述

  • 建議進行修改的是pdflush的工作屬性

  • vm.dirty_background_ratio髒頁佔據記憶體的比例達到多少,需要啟動pdflush執行緒;這個值是個百分比;
    這裡寫圖片描述

  • vm.dirty_ratio:表示的是單個程序的髒頁佔據記憶體達到的百分比,應該啟動pdflush執行緒進行刷寫;
    這裡寫圖片描述

  • vm.dirty_bytes:表示使用的髒頁的位元組數來進行控制;
    這裡寫圖片描述

  • 0表示沒有進行定義,使用vm.dirty_ratio來進行控制

  • vm.dirty.expire.centisecs:單位是百分之一秒,表示如果上面的時間沒有得到滿足,那麼每隔多長時間進行一次清寫操作,底下這個表示的是30秒,其中0表示禁止;
    這裡寫圖片描述

  • vm.dirty.Writeback.centisecs:表示用於定義系統中某些髒頁存在的最長時間,一旦到達這個時間,就會啟動執行緒刷寫髒頁;

  • FLUSHall dirty buffers and pages

  • 這個通常來說是通過呼叫sync command來執行的,syn主要實現的是將dirty page同步到磁碟上面;

  • echo s > /proc/sysrq-trigger

  • Reclaim clean pages

  • echo 3 > /proc/sys/vm/drop_cache:

    • 1:表示free pagecache;
    • 2表示free dentries and inodes;
    • 3表示free pagecache dentries and inodes;
  • Out Of memory Kill

  • 通常在 所有的memory以及swap都被使用的時候;

  • ZONE_NORMAL裡面沒有可以使用的page;

  • 沒有足夠的記憶體用於頁表mapping;

  • 通常來說殺死程序是按照oom_score這個分數為標準的,數值越高,越優先被殺死;

  • 當這個值為0時,表示記憶體耗盡時,就可以啟動OOMK
    這裡寫圖片描述

  • 這個oom_score是系統自動計算得到的,並且需要主動的參照於oom_adj,通常範圍是-17-->15,可用的表示範圍是-16--->15,如果設定為-17,表示無論任何情況,這個程序都是不會被kill掉的;可以用於保護某些程序;

  • 通常來說oom_score=2^oom_adj的值;

  • 通常來說子程序是繼承父程序的oom_score的值的,如果需要關閉這個選項,

sysctl -w vm.panic_on_oom=1
  • 評估記憶體子系統
  • valgrind:通常是一個包含各個子元件的,記憶體狀態監測工具,建議安裝上這個軟體包
    這裡寫圖片描述
  • 記憶體洩漏就是,記憶體再被分配出去,無法進行回收,也無法重新分配進行使用
    這裡寫圖片描述
  • SWAP頁面
  • swap-out表示從記憶體上面寫入,交換分割槽中;
  • swap-in:表示從交換分割槽中寫入記憶體中;
  • 滿足swap的要求:
    • 1.首先是inactive pages;
    • 2.其次是anonymous pages;
  • swap cache:從swap載入進來的,但是沒有進行任何修改的資料, 通常使用來避免多程序同時訪問同一個記憶體頁框的情況;
  • 提供swap效能:
    * 儘可能降低swap的訪問次數;
    * 可以通過多個磁碟裝置提供多個swap分割槽,可以提供負載均衡的效果;
    * 降低服務時間;
    * 使用SSD盤;
    * 可以講swap分區劃分在最外道的分割槽,用於加快交換分割槽的訪問速度;
  • 調整swap的使用:
    這裡寫圖片描述
  • 通常來說使用交換記憶體是因為% of memory mapped into page table + vm.swappiness >= 100,時就會使用swap分割槽,如果更加傾向於使用交換出anonymous pages可以通過提高vm.swappiness;在記憶體足夠使用,的情況下,應該儘可能的降低這個值;
  • 使用交換分割槽的情況:
    • batch compute server:通常是4*RAM;
    • Database server:<= 1GB;
    • Application server:通常是>=0.5 * RAM;
  • 通過提供多個裝置,並且提供同樣的優先順序
[email protected]:~# mkswap -L SWAP_LABEL /path/to/some/device
vim /etc/fstab
/dev/sda1		swap 		swap 		pri=5	0	0
/dev/sdb1		swap		swap		pri=5	0	0
LABEL=testswap	swap		swap		pri=5	0	0
/swap/swapfile1	swap		swap		pri=5	0	0

//掛載使用
swapon 	-a
  • 如果需要檢視交換分割槽,
    這裡寫圖片描述

  • 關於網路的幾個變數:

  • tcp_max_tw_buckets:表示的含義是用於儲存所有處於TIME_WAIT的會話的個數,這個值建議調大,而不是調小;
    這裡寫圖片描述

  • tcp_fin_timeout:表示的含義是tcp_fin的超時時間;

  • tcp_mem:表示的含義是tcp socketstcp_wmem傳送和接受tcp_rmem緩衝的大小;,關於這兩個值的最大值,在檔案core/rmem_max core/wmem_max core/mem_default;

  • 可能使用的命令 sar dstat vmstat mpstat iostat top free iotop uptime cat /proc/meminfo ss netstat lsof blktrace blkparse btt time perf ;

  • 對檔案系統進行壓力測試的工具:dd iozone io-stress fio;