日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux架构师高级系统调优策略

發(fā)布時(shí)間:2025/3/20 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux架构师高级系统调优策略 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、進(jìn)程管理

1、啟動(dòng)流程

POST:啟動(dòng)BIOS,加載硬件信息到CPU,完成各個(gè)設(shè)備的中斷注冊(cè)及IO端口注冊(cè)。讀取CMOS,確定啟動(dòng)加載順序,啟動(dòng)系統(tǒng),如果是從硬盤啟動(dòng)會(huì)讀取MBR分區(qū)。

2、什么是進(jìn)程

程序的運(yùn)行實(shí)例(現(xiàn)實(shí)表現(xiàn)),程序的一部分代碼而已。

CPU通過時(shí)序(時(shí)間片)讓多個(gè)任務(wù)(程序,進(jìn)程)同時(shí)運(yùn)行,實(shí)質(zhì)在某一個(gè)時(shí)間點(diǎn)是只有一個(gè)在運(yùn)行的。CPU通過進(jìn)程調(diào)度器結(jié)合調(diào)度策略調(diào)度進(jìn)程。

cpu密集型——批處理進(jìn)程

i/o密集型———交互式進(jìn)程

3、優(yōu)先級(jí)調(diào)度

1-99 實(shí)時(shí)優(yōu)先級(jí),99優(yōu)先級(jí)最高

調(diào)度方法:?chrt -f 99??/bin/ls

用戶空間級(jí)別的優(yōu)先級(jí)調(diào)整

啟動(dòng)時(shí)調(diào)整優(yōu)先級(jí):nice

啟動(dòng)后調(diào)整優(yōu)先級(jí):renice

二、CPU性能統(tǒng)計(jì)

1、平均負(fù)載:

vmstate

[root@node5.dtedu.com ~]# vmstat 1 5

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

?r? b ? swpd ? free ? buff? cache ? si ? so? ? bi? ? bo ? in ? cs us sy id wa st

?0? 0? ? ? 0 1555200? 18576 175188? ? 0? ? 0 ? ? 4 ? ? 0 ? 27 ? 29? 0? 0 100? 0? 0

?0? 0? ? ? 0 1555200? 18576 175208? ? 0? ? 0 ? ? 0 ? ? 0 ? 64 ? 55? 0? 0 100? 0? 0

?0? 0? ? ? 0 1555200? 18576 175208? ? 0? ? 0 ? ? 0 ? ? 0 ? 49 ? 53? 0? 0 100? 0? 0

?0? 0? ? ? 0 1555200? 18576 175208? ? 0? ? 0 ? ? 0 ? ? 0 ? 47 ? 49? 0? 0 100? 0? 0

?0? 0? ? ? 0 1554936? 18576 175208? ? 0? ? 0 ? ? 0 ? ? 0 ? 75? 118? 0? 0 100? 0? 0

w:隊(duì)列是對(duì)每一個(gè)cpu的,比如0.9,就是這個(gè)cpu的負(fù)載率是90%,所以

[root@node5.dtedu.com ~]# w

?08:18:38 up? 5:26,? 1 user,? load average: 1.00, 1.00, 0.91

USER ? ? TTY? ? ? FROM? ? ? ? ? ? ? LOGIN@ ? IDLE ? JCPU ? PCPU WHAT

root ? ? pts/0? ? 192.168.4.100? ? 08:18? ? 0.00s? 0.07s? 0.00s w


top

[root@node5.dtedu.com ~]# top


top - 08:18:34 up? 5:26,? 1 user,? load average: 1.00, 1.00, 0.91

Tasks: 129 total, ? 1 running, 128 sleeping, ? 0 stopped, ? 0 zombie

Cpu(s):? 0.2%us,? 0.2%sy,? 0.0%ni, 99.5%id,? 0.0%wa,? 0.2%hi,? 0.0%si,? 0.0%st

Mem: ? 1922096k total, ? 284196k used,? 1637900k free,? ? 17412k buffers

Swap:? 2064380k total,? ? ? ? 0k used,? 2064380k free,? ? 95280k cached


2、CPU性能評(píng)估

sar,yum install sysstat

[root@node5.dtedu.com ~]# sar -P ALL 10 2

Linux 2.6.32-573.el6.x86_64 (node5.dtedu.com)? 2017年05月16日? _x86_64_ (2 CPU)


08時(shí)36分58秒 ? ? CPU ? ? %user ? ? %nice ? %system ? %iowait? ? %steal ? ? %idle

08時(shí)37分08秒 ? ? all? ? ? 0.05? ? ? 0.00? ? ? 2.00? ? ? 0.05? ? ? 0.00 ? ? 97.90

08時(shí)37分08秒 ? ? ? 0? ? ? 0.10? ? ? 0.00? ? ? 2.20? ? ? 0.00? ? ? 0.00 ? ? 97.70

08時(shí)37分08秒 ? ? ? 1? ? ? 0.10? ? ? 0.00? ? ? 1.90? ? ? 0.00? ? ? 0.00 ? ? 98.00


08時(shí)37分08秒 ? ? CPU ? ? %user ? ? %nice ? %system ? %iowait? ? %steal ? ? %idle

08時(shí)37分18秒 ? ? all? ? ? 0.05? ? ? 0.00? ? ? 0.15? ? ? 0.00? ? ? 0.00 ? ? 99.80

08時(shí)37分18秒 ? ? ? 0? ? ? 0.00? ? ? 0.00? ? ? 0.20? ? ? 0.00? ? ? 0.00 ? ? 99.80

08時(shí)37分18秒 ? ? ? 1? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00


平均時(shí)間: ? ? CPU ? ? %user ? ? %nice ? %system ? %iowait? ? %steal ? ? %idle

平均時(shí)間: ? ? all? ? ? 0.05? ? ? 0.00? ? ? 1.08? ? ? 0.03? ? ? 0.00 ? ? 98.85

平均時(shí)間: ? ? ? 0? ? ? 0.05? ? ? 0.00? ? ? 1.20? ? ? 0.00? ? ? 0.00 ? ? 98.75

平均時(shí)間: ? ? ? 1? ? ? 0.05? ? ? 0.00? ? ? 0.95? ? ? 0.00? ? ? 0.00 ? ? 99.00

[root@node5.dtedu.com ~]#?


dstat,yum install dstat


[root@node5.dtedu.com ~]# dstat

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--

usr?sys?idl?wai?hiq?siq|?read??writ|?recv??send|? in???out?|?int???csw?

? 0 ? 0?100?? 0 ? 0 ? 0|9140B?1087B|?? 0 ? ? 0?|?? 0 ? ? 0?|? 54??? 57?

? 0 ? 0?100?? 0 ? 0 ? 0|?? 0 ? ? 0?|?126B??974B|?? 0 ? ? 0?|? 65??? 50?

? 0?? 1??99?? 0 ? 0 ? 0|?? 0 ? ? 0?|? 66B??420B|?? 0 ? ? 0?|? 75??? 59?

? 0 ? 0?100?? 0 ? 0 ? 0|?? 0 ??124k|? 66B??346B|?? 0 ? ? 0?|? 59??? 65?

? 0 ? 0?100?? 0 ? 0 ? 0|?? 0 ? ? 0?|? 66B??420B|?? 0 ? ? 0?|? 79??? 71?

? 1?? 0?100?? 0 ? 0 ? 0|?? 0 ? ? 0?|?126B??420B|?? 0 ? ? 0?|? 52??? 55?


vmstat ,如果里面的”CS”值在1000個(gè)以上說明“進(jìn)程的上下文切換”太高。

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

?r? b ? swpd ? free ? buff? cache ? si ? so? ? bi? ? bo ? in ? cs us sy id wa st

?0? 0? ? ? 0 1536480? 22364 187316? ? 0? ? 0 ? ? 4 ? ? 1 ? 27 ? 29? 0? 0 100? 0? 0

?0? 0? ? ? 0 1536480? 22364 187316? ? 0? ? 0 ? ? 0 ? ? 0 ? 60 ? 53? 0? 1 100? 0? 0

查看進(jìn)程運(yùn)行在那顆cpu上。

[root@node5.dtedu.com ~]# watch -n1 'ps axo comm,pid,psr |grep saslauthd'

Every 1.0s: ps axo comm,pid,psr |grep saslauthd? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Tue May 16 08:48:30 2017


saslauthd? ? ? ? 1875 ? 1

saslauthd? ? ? ? 1877 ? 1

saslauthd? ? ? ? 1878 ? 1

saslauthd? ? ? ? 1879 ? 1

saslauthd? ? ? ? 1880 ? 1

當(dāng)需要將某一個(gè)進(jìn)程綁定到某個(gè)cpu上運(yùn)行,減少進(jìn)程在cpu之間的跳轉(zhuǎn),可以通過taskset命令設(shè)置。

[root@node5.dtedu.com ~]# ps axo pid,comm,psr |grep 7156

?7156 httpd ? ? ? ? ? ? 0


[root@node5.dtedu.com ~]# taskset -c? -p 1 7156

pid 7156's current affinity list: 0,1

pid 7156's new affinity list: 1

[root@node5.dtedu.com ~]#?


三、內(nèi)存調(diào)優(yōu)

實(shí)際上調(diào)整的就是pdflush,這個(gè)主要負(fù)責(zé)內(nèi)存中的數(shù)據(jù)更新到磁盤上的管理模塊。

? ? ?kswapd內(nèi)存虛擬空間的啟動(dòng)策略,

? ? ?slab allocator,內(nèi)存空間如何分配。

內(nèi)存空間區(qū)段使用情況:

32位系統(tǒng):

zone_DMA:1-16M

ZONE_NORMAL:17-896M

ZONE_RESERVED:897-1024M

ZONE_HIGHMEM:

64位系統(tǒng):

ZONE_DMA:1-1024M 1G

ZONE_DMA32:4G

ZONE_NORMAL:

查看系統(tǒng)區(qū)段信息:cat /proc/zoneinfo

[root@node6.dtedu.com ~]# cat /proc/zoneinfo?

Node 0, zone? ? ? DMA

? pages free ? ? 3924

? ? ? ? min? ? ? 83

? ? ? ? low? ? ? 103

? ? ? ? high ? ? 124

? ? ? ? scanned? 0

? ? ? ? spanned? 4080

? ? ? ? present? 3826

? ? nr_anon_transparent_hugepages 0 透明大頁面,用來改變內(nèi)存最小存儲(chǔ)單位大小。通常小于1T的使用2M的巨型頁

? ? ? ? protection: (0, 2004, 2004, 2004)

? pagesets

? ? cpu: 0

? ? ? ? ? ? ? count: 0

? ? ? ? ? ? ? high:? 0

? ? ? ? ? ? ? batch: 1

? vm stats threshold: 4

? ? cpu: 1

? ? ? ? ? ? ? count: 0

? ? ? ? ? ? ? high:? 0

? ? ? ? ? ? ? batch: 1

? vm stats threshold: 4

? all_unreclaimable: 0

? prev_priority: ? ? 12

? start_pfn: ? ? ? ? 16

? inactive_ratio:? ? 1

Node 0, zone? ? DMA32

? pages free ? ? 377640

? ? ? ? min? ? ? 11180

? ? ? ? low? ? ? 13975

? ? ? ? high ? ? 16770

? ? ? ? scanned? 0

? vm stats threshold: 20

? ? cpu: 1

? ? ? ? ? ? ? count: 124

? ? ? ? ? ? ? high:? 186

? ? ? ? ? ? ? batch: 31

? vm stats threshold: 20

? all_unreclaimable: 0

? prev_priority: ? ? 12

? start_pfn: ? ? ? ? 4096

? inactive_ratio:? ? 3


注意:/proc目錄下的所以都可以通過man proc 進(jìn)行查看相關(guān)目錄及文件的使用說明。

如果要清空buffer或者coach內(nèi)容,可以

page caches:通常用來緩存文件的數(shù)據(jù)

Buffer :緩存文件的元數(shù)據(jù),保存用戶需要寫道磁盤的數(shù)據(jù)信息。

echo >1 /proc/sys/vm/drop_caches? 釋放page caches

echo >2 /proc/sys/vm/drop_caches? 釋放buffer ?不建議

swap的使用

通常建議系統(tǒng)不使用swap空間,所以可以通過修改proc下swappiness進(jìn)行設(shè)定,設(shè)定值0-100,數(shù)值越大使用可能性越高。

?

swap設(shè)置建議:

科學(xué)計(jì)算:4*RAM(內(nèi)存)

數(shù)據(jù)庫服務(wù):1G

應(yīng)用服務(wù)器:0.5*RAM

oom標(biāo)記

用來標(biāo)記當(dāng)內(nèi)存空間告罄的情況下,對(duì)于高內(nèi)存消耗的進(jìn)程進(jìn)行關(guān)閉的管理標(biāo)記,通常這個(gè)是自動(dòng)啟動(dòng)的,也可以在內(nèi)存沒有耗盡前手動(dòng)啟動(dòng),或者對(duì)于高內(nèi)存進(jìn)程進(jìn)行不標(biāo)記操作。

比如:

1、關(guān)閉oom標(biāo)記,/etc/sysctl.conf或者更改proc

[root@node6.dtedu.com ~]# echo 1 >/proc/sys/vm/panic_on_oom?


2、查看進(jìn)程的oom標(biāo)記

[root@node6.dtedu.com ~]# cat /proc/2214/oom_score

1


3、調(diào)整進(jìn)程的oom標(biāo)記,如果不想被殺死,進(jìn)行使用小的數(shù)值。

[root@node6.dtedu.com ~]# cat /proc/2214/oom_adj?

0


4、手動(dòng)啟動(dòng)oom標(biāo)記,刪除高消耗進(jìn)程

[root@node6.dtedu.com ~]# echo f >/proc/sysrq-trigger?


內(nèi)存檢測工具

1、vmstate?

[root@node6.dtedu.com ~]# vmstat 1 3

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

?r? b ? swpd ? free ? buff? cache ? si ? so? ? bi? ? bo ? in ? cs us sy id wa st

?0? 0? ? ? 0 1525180? 17400 207012? ? 0? ? 0 ? ? 2 ? ? 1 ? 28 ? 28? 0? 0 100? 0? 0

?0? 0? ? ? 0 1525164? 17400 207012? ? 0? ? 0 ? ? 0 ? ? 0 ? 68? 101? 0? 0 100? 0? 0

修改hugepage的大小,有助于提高TLB的性能,也可以用于快速緩存腳本信息。

啟動(dòng)hugepages:

in /etc/sysctl.conf

vm_nr_hugepages = ?n

Kernel parameter

hugepages ?= n?

將huge當(dāng)做內(nèi)存磁盤來使用:

mkdir /hugepages

mount -t hugetlbfs ?none /hugepage

檢查swap使用情況,通常以下數(shù)值頻繁出現(xiàn)說明物理內(nèi)存空間不足。

Linux 2.6.32-573.el6.x86_64 (node6.dtedu.com)? 2017年05月16日? _x86_64_ (2 CPU)


17時(shí)42分35秒? pswpin/s pswpout/s

17時(shí)42分36秒? ? ? 0.00? ? ? 0.00

17時(shí)42分37秒? ? ? 0.00? ? ? 0.00

17時(shí)42分38秒? ? ? 0.00? ? ? 0.00


[root@node6.dtedu.com ~]# dstat -mgs

------memory-usage----- ---paging-- ----swap---

?used??buff??cach??free|? in???out?|?used??free

?177M?20.7M??214M?1465M|?? 0 ? ? 0?|?? 0 ? ? 0?

?177M?20.7M??214M?1465M|?? 0 ? ? 0?|?? 0 ? ? 0?

?177M?20.7M??214M?1465M|?? 0 ? ? 0?|?? 0 ? ? 0?

?178M?20.7M??214M?1465M|?? 0 ? ? 0?|?? 0 ? ? 0?

?178M?20.7M??214M?1465M|?? 0 ? ? 0?|?? 0 ? ? 0?

?178M?20.7M??214M?1465M|?? 0 ? ? 0?|?? 0 ? ? 0?

?178M?20.7M??214M?1465M|?? 0 ? ? 0?|?? 0 ? ? 0?


內(nèi)核、內(nèi)存以及文件系統(tǒng)的容量調(diào)節(jié)/proc/sys/vm/

[root@node6.dtedu.com ~]# ls /proc/sys/vm/

admin_reserve_kbytes ? ? ? hugepages_treat_as_movable? mmap_min_addr ? ? ? ? ? ? panic_on_oom

block_dump ? ? ? ? ? ? ? ? hugetlb_shm_group ? ? ? ? ? nr_hugepages? ? ? ? ? ? ? percpu_pagelist_fraction

compact_memory ? ? ? ? ? ? laptop_mode ? ? ? ? ? ? ? ? nr_hugepages_mempolicy? ? scan_unevictable_pages

dirty_background_bytes ? ? legacy_va_layout? ? ? ? ? ? nr_overcommit_hugepages ? stat_interval

dirty_background_ratio ? ? lowmem_reserve_ratio? ? ? ? nr_pdflush_threads? ? ? ? swappiness

dirty_bytes? ? ? ? ? ? ? ? max_map_count ? ? ? ? ? ? ? numa_zonelist_order ? ? ? unmap_area_factor

dirty_expire_centisecs ? ? meminfo_legacy_layout ? ? ? oom_dump_tasks? ? ? ? ? ? vfs_cache_pressure

dirty_ratio? ? ? ? ? ? ? ? memory_failure_early_kill ? oom_kill_allocating_task? would_have_oomkilled

dirty_writeback_centisecs? memory_failure_recovery ? ? overcommit_kbytes ? ? ? ? zone_reclaim_mode

drop_caches? ? ? ? ? ? ? ? min_free_kbytes ? ? ? ? ? ? overcommit_memory

extfrag_threshold? ? ? ? ? min_slab_ratio? ? ? ? ? ? ? overcommit_ratio

extra_free_kbytes? ? ? ? ? min_unmapped_ratio? ? ? ? ? page-cluster

[root@node6.dtedu.com ~]#?


1、overcommit_memory

是否允許過量使用內(nèi)存,也就是是否允許使用的內(nèi)存空間大于實(shí)際物理內(nèi)存空間其實(shí)就是是否使用swap。

設(shè)定值:

0:內(nèi)核決定是否允許過量。內(nèi)核計(jì)算過量值

1:內(nèi)核允許使用過量內(nèi)存

2:允許內(nèi)核使用的過量值為物理內(nèi)存、虛擬內(nèi)存的

2、msgmax:消息隊(duì)列中單個(gè)消息的最大值

? ? ?Msgmnb:消息隊(duì)列的大小

? ? ?Msgmni:消息隊(duì)列的個(gè)數(shù)

? ? ?Shmall:一次在系統(tǒng)中可以使用的共享內(nèi)存總量,通過他可以約束內(nèi)存端個(gè)數(shù)(shmmax)。

? ? shmmni:用于共享內(nèi)存的內(nèi)存端個(gè)數(shù)(最多多少個(gè)內(nèi)存端用于共享內(nèi)存)

? ? shmmax:單個(gè)內(nèi)存片段大小。

? ? Threads-max:規(guī)定內(nèi)核使用的最大線程數(shù),

3、同文件系統(tǒng)容量相關(guān)的參數(shù)

file-max:內(nèi)存分配的最大句柄數(shù)

修改方法:

[root@node6.dtedu.com ~]# vi /etc/security/limits.conf?


# /etc/security/limits.conf

#

#Each line describes a limit for a user in the form:

#

#<domain>? ? ? ? <type>? <item>? <value>

#

#Where:


4、調(diào)整內(nèi)存優(yōu)化

dirty_ratio:當(dāng)某一個(gè)進(jìn)程的數(shù)值達(dá)到總內(nèi)存的百分比后就寫下臟數(shù)據(jù)(pdflush)

dirty_backgroud_ratio:當(dāng)總進(jìn)程的數(shù)值合計(jì)達(dá)到總內(nèi)存的百分比后開始在后端就寫下臟數(shù)據(jù)(pdflush)

dirty_expire_centisecs:臟頁寫入磁盤的等待時(shí)間間隔

dirty_writeback_centisecs:數(shù)據(jù)在內(nèi)存中的老化時(shí)間

調(diào)優(yōu)參考文件:http://www.2cto.com/os/201407/315641.html

5、IO優(yōu)化

io調(diào)度器調(diào)整方法:

queue_length:緩存區(qū)長度

[root@node6.dtedu.com ~]# cat /sys/block/sdb/queue/nr_requests?

128


max_read_ahead:一次讀取隊(duì)列內(nèi)排隊(duì)消息個(gè)數(shù)

[root@node6.dtedu.com ~]# cat /sys/block/sdb/queue/read_ahead_kb?

128


修改默認(rèn)調(diào)度器的調(diào)度算法:實(shí)時(shí)生效,永久有效要寫入的rc.local中。

[root@node6.dtedu.com ~]# ls /sys/block/sdb/queue/iosched/ //配置調(diào)度器算法的文件

back_seek_max? ? ? fifo_expire_async? group_idle ? ? ? low_latency? slice_async ? ? slice_idle

back_seek_penalty? fifo_expire_sync ? group_isolation? quantum? ? ? slice_async_rq? slice_sync

[root@node6.dtedu.com ~]# cat /sys/block/sdb/queue/scheduler? //可選調(diào)度算法及當(dāng)前調(diào)度算法,【】內(nèi)的為當(dāng)前調(diào)度算法。

noop anticipatory deadline [cfq]?


back_seek_max:最大反向?qū)さ馈?/p>

back_seek_penalty:反向?qū)さ莱鲥e(cuò)后懲罰系數(shù)

fifo_expire_async:異步請(qǐng)求等待時(shí)間

fifo_expire_sync:同步請(qǐng)求等待時(shí)間

壓力測試工具:

fio

iozone


磁盤狀態(tài)跟蹤記錄工具:yum install blktrace ? ,blkparse用于分析。

IO子系統(tǒng)優(yōu)化和監(jiān)控:http://www.codeceo.com/article/linxu-io-monitor.html

四、linux系統(tǒng)優(yōu)化及文件系統(tǒng)優(yōu)化

1、vfs

虛擬文件系統(tǒng):用于實(shí)現(xiàn)程序同底層磁盤不同格式文件系統(tǒng)打交道的“文件系統(tǒng)”。

文件系統(tǒng)屬性:

inode

權(quán)限

大小

atime

mtime

ctime

lsattr

chattr

知識(shí)點(diǎn):

追蹤命令執(zhí)行過程中的詳細(xì)信息

[root@node6.dtedu.com ~]# strace ls

execve("/bin/ls", ["ls"], [/* 25 vars */]) = 0

brk(0)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = 0x12d7000

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f61b7ad8000

access("/etc/ld.so.preload", R_OK)? ? ? = -1 ENOENT (No such file or directory)

open("/etc/ld.so.cache", O_RDONLY)? ? ? = 3

fstat(3, {st_mode=S_IFREG|0644, st_size=54083, ...}) = 0

mmap(NULL, 54083, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f61b7aca000

close(3)? ? ??


查看磁盤文件系統(tǒng)相關(guān)信息塊碎片:

dumpe2fs

[root@node6.dtedu.com ~]# dumpe2fs /dev/sdb1

dumpe2fs 1.41.12 (17-May-2010)

Filesystem volume name: ? <none>

Last mounted on:? ? ? ? ? /mnt

Filesystem UUID:? ? ? ? ? 2290a914-3116-477b-a72f-394c278b2aa9

Filesystem magic number:? 0xEF53

Filesystem revision #:? ? 1 (dynamic)

Filesystem features:? ? ? has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize

Filesystem flags: ? ? ? ? signed_directory_hash?

Default mount options:? ? (none)

Filesystem state: ? ? ? ? clean


檢查一個(gè)文件是否是連續(xù)存儲(chǔ)在一個(gè)磁盤空間:filefrag

/root/install.log: 1 extent found[root@node6.dtedu.com ~]# filefrag /root/install.log -x

Filesystem type is: ef53

Filesystem cylinder groups is approximately 158

File size of /root/install.log is 8835 (3 blocks, blocksize 4096)

FIEMAP failed with unsupported flags 2

/root/install.log: 1 extent found[root@node6.dtedu.com ~]# filefrag /root/install.log -v

Filesystem type is: ef53

Filesystem cylinder groups is approximately 158

File size of /root/install.log is 8835 (3 blocks, blocksize 4096)

?ext logical physical expected length flags

?? 0 ? ? ? 0? 1433842 ? ? ? ? ? ? ? 2 merged

?? 1 ? ? ? 2? 1433844 ? ? ? ? ? ? ? 1 merged,eof


linux系統(tǒng)本事是可以避免碎片化的,所以不用進(jìn)行碎片整理,如果非要整理使用fsck命令,非常消耗資源。

文件系統(tǒng)存儲(chǔ)存儲(chǔ)方式:

ext3:

journal:數(shù)據(jù)完整性最高,但是性能最差,通常不使用。

ordered:默認(rèn)操作,數(shù)據(jù)寫入存儲(chǔ)區(qū)之前先寫入日志區(qū)確認(rèn)無誤后再寫入數(shù)據(jù)區(qū)。

writeback:在ordered的基礎(chǔ)上,并不會(huì)立即寫入元數(shù)據(jù)區(qū),而是自行選擇最佳寫入時(shí)機(jī)。性能好,一致性較差。

使用方法:

[root@node6.dtedu.com ~]# mount -o data=writeback /dev/sdb1 /mnt


ext4文件系統(tǒng)優(yōu)化:

1、nobarriers,建議mysql數(shù)據(jù)庫存儲(chǔ)分區(qū)使用此參數(shù)進(jìn)行掛載,mount -o nobarriers

2、noatime,對(duì)目錄和文件進(jìn)行不更新時(shí)間戳操作。nodirtime只對(duì)目錄不更新。

3、預(yù)讀量設(shè)置,適用于大量連續(xù)讀寫情況。此值要和物理設(shè)備的預(yù)讀量相關(guān),查看方式:

[root@node6.dtedu.com ~]# blockdev --getra /dev/sdb1

256


xfs文件系統(tǒng)優(yōu)化

通常使用默認(rèn)設(shè)定就是最佳方案了,并且建議mysql數(shù)據(jù)庫建立在xfs文件系統(tǒng)上。

五、網(wǎng)絡(luò)IO子系統(tǒng)優(yōu)化


1、查看網(wǎng)絡(luò)端口打開狀態(tài)

[root@node7.dtedu.com ~]# netstat -tunlp //查看tcp/udp的監(jiān)聽狀態(tài)端口

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address ? ? ? ? ? ? ? Foreign Address ? ? ? ? ? ? State ? ? ? PID/Program name? ?

tcp? ? ? ? 0? ? ? 0 10.40.0.227:21064 ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ? ? ? LISTEN? ? ? -? ? ? ? ? ? ? ? ? ?

tcp? ? ? ? 0? ? ? 0 0.0.0.0:111 ? ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ? ? ? LISTEN? ? ? 1383/rpcbind ? ? ? ?

tcp? ? ? ? 0? ? ? 0 0.0.0.0:57524 ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ? ? ? LISTEN? ? ? 1405/rpc.statd ? ? ?

tcp? ? ? ? 0? ? ? 0 0.0.0.0:22? ? ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ? ? ? LISTEN? ? ? 1546/sshd? ? ? ? ? ?

tcp? ? ? ? 0? ? ? 0 127.0.0.1:25? ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ? ? ? LISTEN? ? ? 1636/master?

[root@node7.dtedu.com ~]# netstat -tu //查看tcp/udp的建立連接的端口

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address ? ? ? ? ? ? ? Foreign Address ? ? ? ? ? ? State ? ? ?

tcp? ? ? ? 0? ? ? 1 node7.dtedu.com:41163 ? ? ? node5.dtedu.com:16851 ? ? ? SYN_SENT ? ?

tcp? ? ? ? 0? ? ? 0 node7.dtedu.com:ssh ? ? ? ? 10.40.0.222:65026 ? ? ? ? ? ESTABLISHED?

2、sar命令檢查方法:

[root@node7.dtedu.com ~]# sar -n SOCK 1 4

Linux 2.6.32-573.el6.x86_64 (node7.dtedu.com)? 2017年05月18日? _x86_64_ (1 CPU)


16時(shí)07分13秒? ? totsck? ? tcpsck? ? udpsck? ? rawsck ? ip-frag? ? tcp-tw

16時(shí)07分14秒 ? ? ? 218 ? ? ? ? 7 ? ? ? ? 7 ? ? ? ? 1 ? ? ? ? 0 ? ? ? ? 0

16時(shí)07分15秒 ? ? ? 218 ? ? ? ? 7 ? ? ? ? 7 ? ? ? ? 1 ? ? ? ? 0 ? ? ? ? 0

16時(shí)07分16秒 ? ? ? 218 ? ? ? ? 7 ? ? ? ? 7 ? ? ? ? 1 ? ? ? ? 0 ? ? ? ? 0

16時(shí)07分17秒 ? ? ? 218 ? ? ? ? 7 ? ? ? ? 7 ? ? ? ? 1 ? ? ? ? 0 ? ? ? ? 0

平均時(shí)間: ? ? ? 218 ? ? ? ? 7 ? ? ? ? 7 ? ? ? ? 1 ? ? ? ? 0 ? ? ? ? 0


totsock:系統(tǒng)持有的socket個(gè)數(shù)

tcpsck:當(dāng)前正在使用的tcp協(xié)議的socket個(gè)數(shù)

Udpsck:

Romsck:ram正在使用的數(shù)量

ip-frag:正在使用的ip分片個(gè)數(shù)

Tcp-tw:當(dāng)前正在使用的tcpsocket中處于time_out的個(gè)數(shù)

3、lsof

列出當(dāng)前系統(tǒng)打開文件的工具。

每行顯示一個(gè)打開的文件,若不指定條件默認(rèn)將顯示所有進(jìn)程打開的所有文件。

? ?lsof輸出各列信息的意義如下:

COMMAND:進(jìn)程的名稱 PID:進(jìn)程標(biāo)識(shí)符

USER:進(jìn)程所有者

FD:文件描述符,應(yīng)用程序通過文件描述符識(shí)別該文件。如cwd、txt等 TYPE:文件類型,如DIR、REG等

DEVICE:指定磁盤的名稱

SIZE:文件的大小

NODE:索引節(jié)點(diǎn)(文件在磁盤上的標(biāo)識(shí))

NAME:打開文件的確切名稱


lsof?abc.txt?顯示開啟文件abc.txt的進(jìn)程 lsof?-c?abc?顯示abc進(jìn)程現(xiàn)在打開的文件 lsof?-c?-p??列出進(jìn)程號(hào)為1234的進(jìn)程所打開的文件 lsof?-g?gid?顯示歸屬gid的進(jìn)程情況 lsof?+d?/usr/local/?顯示目錄下被進(jìn)程開啟的文件 lsof?+D?/usr/local/?同上,但是會(huì)搜索目錄下的目錄,時(shí)間較長 lsof?-d??顯示使用fd為4的進(jìn)程 lsof?-i?用以顯示符合條件的進(jìn)程情況 lsof?-i[]?[protocol][@hostname|hostaddr][:service|port]-->?IPv4?or?IPv6protocol?-->?TCP?or?UDPhostname?-->?Internet?host?namehostaddr?-->?IPv4地址service?-->?/etc/service中的?service?name?(可以不止一個(gè))port?-->?端口號(hào)?(可以不止一個(gè)) lsof?`which?httpd`?lsof?/etc/passwd?lsof?/dev/hda6?lsof?/dev/cdrom?lsof?-c?sendmail?lsof?-c?courier?-u?^zahn?lsof?-p??lsof?-D?/tmp?顯示所有在/tmp文件夾中打開的instance和文件的進(jìn)程。但是symbol文件并不在列l(wèi)sof?-u1000?lsof?-utony?lsof?-u^tony?lsof?-i?lsof?-i:?lsof?-i?-U?lsof?-i?UDP@[url]www.akadia.com:?lsof?-i?tcp@ohaha.ks.edu.tw:ftp?-r?lsof?-i?tcp@ohaha.ks.edu.tw:ftp?-n

4、dstat

多功能系統(tǒng)資源統(tǒng)計(jì)生成工具(?versatile tool for generating system resource statistics)。在獲取的信息上有點(diǎn)類似于top、free、iostat、vmstat等多個(gè)工具的合集,官方解釋為vmstat、iostat、ifstat等工具的多功能替代品

按照io負(fù)載率統(tǒng)計(jì)進(jìn)程排序

[root@node7.dtedu.com ~]# dstat --top-io

----most-expensive----

?? ? i/o process ? ? ?

rgmanager ??261B??414k

sshd: root@?146B??184B

fenced ? ??? 64B??128B

fenced ? ??? 64B??128B

modclusterd?292B? ? 0?

clustat? ??? 15k? ? 0?

fenced ? ??? 64B??128B

fenced ? ??? 64B??128B

modclusterd?292B? ? 0?

modclusterd? 15k? ? 0?

fenced ? ??? 64B??128B

modclusterd?292B? ? 0 ^C


按照cpu負(fù)載率統(tǒng)計(jì)進(jìn)程并排序

[root@node7.dtedu.com ~]# dstat --top-cpu

-most-expensive-

? cpu process? ?

corosync ? ??0.1? ? ? ? ? ? ???? ? ? ? ? ?

sshd: root@pt1.0

c:顯示CPU系統(tǒng)占用,用戶占用,空閑,等待,中斷,軟件中斷等信息。 -C:當(dāng)有多個(gè)CPU時(shí)候,此參數(shù)可按需分別顯示cpu狀態(tài),例:-C 0,1 是顯示cpu0和cpu1的信息。 -d:顯示磁盤讀寫數(shù)據(jù)大小。 -D hda,total:include hda and total。 -n:顯示網(wǎng)絡(luò)狀態(tài)。 -N eth1,total:有多塊網(wǎng)卡時(shí),指定要顯示的網(wǎng)卡。 -l:顯示系統(tǒng)負(fù)載情況。 -m:顯示內(nèi)存使用情況。 -g:顯示頁面使用情況。 -p:顯示進(jìn)程狀態(tài)。 -s:顯示交換分區(qū)使用情況。 -S:類似D/N。 -r:I/O請(qǐng)求情況。 -y:系統(tǒng)狀態(tài)。 --ipc:顯示ipc消息隊(duì)列,信號(hào)等信息。 --socket:用來顯示tcp udp端口狀態(tài)。 -a:此為默認(rèn)選項(xiàng),等同于-cdngy。 -v:等同于 -pmgdsc -D total。 --output 文件:此選項(xiàng)也比較有用,可以把狀態(tài)信息以csv的格式重定向到指定的文件中,以便日后查看。例:dstat --output /root/dstat.csv & 此時(shí)讓程序默默的在后臺(tái)運(yùn)行并把結(jié)果輸出到/root/dstat.csv文件中。

來自:?http://man.linuxde.net/dstat

六、進(jìn)程管理優(yōu)化

1、實(shí)現(xiàn)多內(nèi)核的CPU的“專核專用”的效果。

將多個(gè)核心的cpu其中的幾個(gè)內(nèi)核獨(dú)立出來,專門供一些特殊的進(jìn)程使用,這樣就保證了進(jìn)程的工作穩(wěn)定性和高效率。要實(shí)現(xiàn)此目的,需要在啟動(dòng)系統(tǒng)的時(shí)候隔離出需要的內(nèi)核,然后在將其從io中斷中分離出來,最后是內(nèi)核指定給進(jìn)程使用。

A、隔離出指定內(nèi)核,修改/etc/grub.conf文件,并添加一下內(nèi)容:

isolcpu = cpu number1,cup number2,…….

B、關(guān)聯(lián)進(jìn)程到內(nèi)核,

C、將中斷信號(hào)只發(fā)送的其他非“專用”的內(nèi)核上。

查看終端號(hào)同那個(gè)cpu關(guān)聯(lián)。

[root@node7.dtedu.com ~]# cat /proc/irq/0/smp_affinity

1

[root@mail ~]# cat /proc/irq/0/smp_affinity

ffffffff

[root@mail ~]# cat /proc/irq/1/smp_affinity

000000ff

[root@mail ~]# cat /proc/irq/5/smp_affinity

000000ff

[root@mail ~]# cat /proc/irq/7/smp_affinity


查看中斷號(hào):

[root@node7.dtedu.com ~]# ls /proc/irq/

0???11??14??17??2???26??29??31??34??37??4???42??45??48??50??53??6??9

1???12??15??18??24??27??3???32??35??38??40??43??46??49??51??54??7? default_smp_affinity

10??13??16??19??25??28??30??33??36??39??41??44??47??5???52??55??8

[root@node7.dtedu.com ~]#?


比如:我有8個(gè)邏輯core,那么CPU#的序列為11111111 (從右到左依次為#0~#7的CPU)如果cat? /proc/irq/84/smp_affinity的值為:20(二進(jìn)制為:00100000),則84這個(gè)IRQ的親和性為#5號(hào)CPU。

2、實(shí)現(xiàn)多CPU和物理內(nèi)存綁定為一個(gè)“資源組”,并實(shí)現(xiàn)進(jìn)程只能在指定資源組內(nèi)訪問的方法



本文轉(zhuǎn)自 blackstome 51CTO博客,原文鏈接:http://blog.51cto.com/137783/1968814,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的linux架构师高级系统调优策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。