更新日期: 23-1-12
[目錄]
- 系統資源足夠嗎 ??
- 資源
- 資源(進階)
- I/O priority
- I/O 情況(beancounter)
- Device Passthrough(devices/devnodes)
- VPS 上的特權(features)
系統資源足夠嗎 ??
這問提相當簡單, 只要在虛擬機正常工作 4, 5 小時後
在 guest 執行 "cat /proc/user_beancounters"
Output:
Version: 2.5
uid resource held maxheld barrier limit failcnt
1001: kmemsize 5620049 7037778 40000000 42000000 0
lockedpages 0 0 2261 2261 0
privvmpages 25894 40644 154086 169494 0
shmpages 1066 1082 15408 15408 0
dummy 0 0 0 0 0
numproc 58 76 1024 1024 0
physpages 13862 26978 0 2147483647 0
vmguarpages 0 0 131072 2147483647 0
oomguarpages 13862 26978 151072 2147483647 0
numtcpsock 22 34 2000 2000 0
numflock 10 17 1000 1100 0
numpty 1 1 200 200 0
numsiginfo 0 2 1024 1024 0
tcpsndbuf 395232 599392 7247940 15439940 0
tcprcvbuf 360448 549264 7247940 15439940 0
othersockbuf 155112 682160 3623970 11815970 0
dgramrcvbuf 0 2248 3623970 3623970 0
numothersock 124 164 2000 2000 0
dcachesize 324684 401418 10110757 10414080 0
numfile 1565 1965 18080 18080 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
numiptent 13 13 200 200 0
如果 failcnt 的值是 0 或者數值是個位就夠了
另外, 在 host 上行 cat /proc/bc/1001/ioacct
這裡 1001 是 VPS 的 ID
Output
read 308228096 write 2966835200 dirty 2966876160 cancel 840122368 missed 0 syncs_total 0 fsyncs_total 22 fdatasyncs_total 6 range_syncs_total 0 syncs_active 0 fsyncs_active 0 fdatasyncs_active 0 range_syncs_active 0 vfs_reads 154916238 vfs_read_chars 3134270089933664 vfs_writes 2141514 vfs_write_chars 18896457858853 io_pbs 10
如果 missed 是 0 就非常理想了
資源(進階):
分類
在傳統的系統上, 資源共分為4 類
- System resources
- CPU resources
- Disk resources
- Network resources
不過在 OpenVZ 上, 資源被畫分成 3 類
- primary parameters
- secondary parameters
- auxiliary parameters
亦即是依其重要性去劃分
(有 * 的才表即時生效, 不用 reboot)
Primary Parameters
- numproc *
- numtcpsock
- numothersock
- vmguarpages
Secondary Parameters
- kmemsize
- tcpsndbuf
- tcprcvbuf
- othersockbuf
- dgramrcvbuf
- oomguarpages
- privvmpages * <--- 指令 free 時見到的 ram 數量
Auxiliary Parameters
- lockedpages
- shmpages
- physpages <--- 無用
- swappages <--- 無用 (為了有些 program 要 check swap 而設)
- numfile
- numflock
- numpty *
- numsiginfo
- dcachesize
- numiptent *
Other
- diskspace *
- diskinodes *
- cpus
- cpulimit
- cpuunits
- ipadd
- netif_add
- features
- devices
- ioprio
- capability <-- 不能在 running 的 vps 上設定
user_beancounters
user_beancounters是用來反映系統的資源使用情況, 共有5個 field
情況:
- held 當時情況
- maxheld 過去最高記錄 ( vzctrl restart Veid 計一次 )
- failcnt 系統分配不到資源的次數 !!!
限制:
- barrier
- limit
(barrier < limit)
單位:
- num = 個
- pages = 4KB (32-bit Intel-family )
- size and buf = byte
I/O priority ( ioprio )
ioprio 是建基於 Kernel 的 CFQ I/O scheduler
它是用來分配 Block Device 的使用時間給每個 VE, Default is 4
數值由 0 到 7 , 數值愈高, 分得使用時間愈多
PS:
如果 0 = t, 那 7 = 2t 了, 亦即是說 0 是 7 的兩倍
設置:
vzctl set 1001 --ioprio 1 --save
I/O 情況(beancounter)
查看:
cat /proc/bc/1001/ioacct
read
write <--- 當所有東西都寫入了, write = dirty
dirty <--- VPS 啟動到現在的總數
cancel
missed <--- 它們是沒有成功從 Ram(dirty) 寫回 Block Device 的 !!
# 以上全部都是以 bytes 作單位
syncs_total
fsyncs_total
fdatasyncs_total
range_syncs_total
syncs_active
fsyncs_active
fdatasyncs_active
range_syncs_active
vfs_reads
vfs_read_chars
vfs_writes
vfs_write_chars
# 次數
io_pbs <--- 現時未寫入的 dirty pages, 當 sync 後就會 "0"
P.S.
只有 Host 才見到 bc
Device Passthrough(devices/devnodes)
OVZ 支援 passthrough Host 上的裝置入 VPS 內, 比如 usb, block device, character device
由指令加入 c/b Devices:
vzctl set <VEID> --devices b|c:major:minor|all:[r][w][q]|none [--save]
Example:
vzctl set <VEID> --devices c:180:000:rw --save
之後 VEID.conf 就有以下設定
DEVICES="c:180:000:rw "
由指令加入 usb Devices:
vzctl set <VEID> --devnodes device:r|w|rw|none [--save]
Example:
vzctl set <VEID> --devnodes usb/lp0:rw --save
之後 VEID.conf 就有以下設定
DEVNODES="usb/lp0:rw "
Summary:
加 usb printer 入 VPS 內
在 host 上確定認到 usb device
lsusb
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 002: ID 04e8:3292 Samsung Electronics Co., Ltd Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Remark:
Bus 003 Device 002 <---> /dev/bus/usb/003/002
ll /dev/bus/usb/003/
crw-rw-r-- 1 root root 189, 256 Jan 26 2012 001 <--- USB Port crw-rw-r-- 1 root lp 189, 257 Jan 26 13:55 002 <--- Printer
ll /dev/usb/lp0
crw-rw---- 1 root lp 180, 0 Jan 26 13:55 /dev/usb/lp0
讓 VPS 可以存取以上 3 個 character device
vzctl set 1002 --devices "c:180:0:rw c:189:256:rw c:189:257:rw" --save
在 VPS 內建立相對應的 C devices
mkdir -p /dev/bus/usb/003/
chmod 755 /dev/bus /dev/bus/usb /dev/bus/usb/003
cd /dev/bus/usb/003/
mknod 001 c 189 256
mknod 002 c 189 256
chmod 664 001 002
chown root:lp 002
mkdir /dev/usb
chmod 755 /dev/usb
mknod lp0 c 180 0
chmod 660 /dev/usb/lp0
查看
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 002: ID 04e8:3292 Samsung Electronics Co., Ltd
VPS 上的特權(features)
--features name:on|off
Enable or disable a specific container feature. Known features
are: sysfs, nfs, sit, ipip, ppp, ipgre, bridge, nfsd.
Example:
FEATURES="nfs:on "
CAPABILITY="CHOWN:on DAC_READ_SEARCH:on SETGID:on SETUID:on NET_BIND_SERVICE:on NET_ADMIN:on SYS_CHROOT:on SYS_NICE:on "