VPS 的資源

更新日期: 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 "