¥¾¡¼¥ó´Ö¤Ë¤ï¤¿¤ëFSS(Fair Share Scheduling)¤Î¼Â¹ÔÎã
¡Ú¸¡¾Ú´Ä¶¡Û
#
more /etc/release
Solaris 10 3/05 s10_74L2a SPARC
Copyright
2005 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 22 January 2005
#
uname -a
SunOS domain-a 5.10 Generic sun4u sparc SUNW,Sun-Fire-15000
#
prtdiag
¥·¥¹¥Æ¥à¹½À®: Sun Microsystems sun4u Sun Fire 15000
¥·¥¹¥Æ¥à¥¯¥í¥Ã¥¯¼þÇÈ¿ô: 150 MHz
¥á¥â¥ê¡¼¥µ¥¤¥º: 8192 M ¥Ð¥¤¥È
========================= CPUs =========================
CPU Run
E$ CPU CPU
Slot ID ID
MHz MB Impl. Mask
-------- ------- ---- ---- ------- ----
/SB00/P0 0
750 8.0 US-III 3.4
/SB00/P1 1
750 8.0 US-III 3.4
/SB00/P2 2
750 8.0 US-III 3.4
/SB00/P3 3
750 8.0 US-III 3.4
========================= Memory Configuration =========================
Logical Logical Logical
Port Bank Bank
Bank DIMM
Interleave Interleave
Slot ID ID
Number ¥µ¥¤¥º
¾õÂÖ Size
Factor Segment
----------- ---- ------- ------- --------
------ ---------- ----------
/SB00/P0/B0 0
0 1024MB
Àµ¾ï 512MB
8-way 0
/SB00/P0/B0 0
2 1024MB
Àµ¾ï 512MB
8-way 0
/SB00/P1/B0 1
0 1024MB
Àµ¾ï 512MB
8-way 0
/SB00/P1/B0 1
2 1024MB
Àµ¾ï 512MB
8-way 0
/SB00/P2/B0 2
0 1024MB
Àµ¾ï 512MB
8-way 0
/SB00/P2/B0 2
2 1024MB
Àµ¾ï 512MB
8-way 0
/SB00/P3/B0 3
0 1024MB
Àµ¾ï 512MB
8-way 0
/SB00/P3/B0 3
2 1024MB
Àµ¾ï 512MB
8-way 0
========================= IO Cards =========================
Bus Max
IO Port Bus Freq Bus Dev,
Slot ID Type ID Side MHz Freq
Func ¾õÂÖ
Name
Model
---------- ---- ---- ---- ---- ---- ---- -----
-------------------------------- ----------------------
/IO00/C5V0 PCI 28 B
33 33 1,0 λ²ò
pci-pci1011,25.4/pci108e,1000 pci-bridge
/IO00/C5V0 PCI 28 B
33 33 0,0 λ²ò pci108e,1000-pci108e,1000.1
/IO00/C5V0 PCI 28 B
33 33 0,1 λ²ò
SUNW,qfe-pci108e,1001
SUNW,pci-qfe
/IO00/C5V0 PCI 28 B
33 33 1,0 λ²ò pci108e,1000-pci108e,1000.1
/IO00/C5V0 PCI 28 B
33 33 1,1 λ²ò
SUNW,qfe-pci108e,1001
SUNW,pci-qfe
/IO00/C5V0 PCI 28 B
33 33 2,0 λ²ò pci108e,1000-pci108e,1000.1
/IO00/C5V0 PCI 28 B
33 33 2,1 λ²ò
SUNW,qfe-pci108e,1001
SUNW,pci-qfe
/IO00/C5V0 PCI 28 B
33 33 3,0 λ²ò pci108e,1000-pci108e,1000.1
/IO00/C5V0 PCI 28 B
33 33 3,1 λ²ò
SUNW,qfe-pci108e,1001
SUNW,pci-qfe
/IO00 PCI
28 B 33 33 2,0
λ²ò bootbus-controller-pci108e,c416/+ SUNW,sbbc
/IO00 PCI
28 B 33 33 3,0
λ²ò pci108e,1100-pci108e,1100.1
/IO00 PCI
28 B 33 33 3,1
λ²ò
network-pci108e,1101.1
SUNW,pci-eri
/IO00 PCI
28 B 33 33 3,2
λ²ò firewire-pci108e,1102.1001
/IO00 PCI
28 B 33 33 3,3
λ²ò usb-pci108e,1103.1001
/IO00/C3V0 PCI 28 A
66 66 1,0 λ²ò
SUNW,qlc-pci1077,2200.1077.4082.+
/IO00/C5V1 PCI 29 B
33 33 1,0 λ²ò pci-pci1011,26.5/SUNW,qlc
(scsi-+ pci-bridge
/IO00/C5V1 PCI 29 B
33 33 4,0 λ²ò
SUNW,qlc-pci1077,2200.1077.4083.+
/IO00/C5V1 PCI 29 B
33 33 5,0 λ²ò
SUNW,qlc-pci1077,2200.1077.4083.+
¡Ú¸¡¾ÚÆâÍÆ¡Û
¡¦£´¤Ä¤ÎCPU¤ò£²¤Ä¤Î¥×¥í¥»¥Ã¥µ¥»¥Ã¥Èʬ¤±¤ë¡£
¡¡pset_default: 1CPU
¡¡zone1-pset: 3CPU
¡¦°ìÊý¤Î¥×¥í¥»¥Ã¥µ¥»¥Ã¥È(zone1-pset)¤ËÂбþ¤·¤¿¥ê¥½¡¼¥¹¥×¡¼¥ë(zone1-pool)¤Ë£²¤Ä¤Î¥¾¡¼¥ó(zone1,
zone3)¤ò³ä¤êÅö¤ÆFSS¤Îưºî³Îǧ¤ò¤¹¤ë¡£
¡¡zone1¤Î zone.cpu-shares ¤Î limitÃÍ¡¡¡§ 20
¡¡zone3¤Î zone.cpu-shares ¤Î limitÃÍ¡¡¡§ 80
¡¡
¡¦¤µ¤é¤ËZone-wide¤ËCPU¤ÎFSS¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë¥í¡¼¥«¥ë¥¾¡¼¥óÆâ¤Ç¥×¥í¥¸¥§¥¯¥È¥Ù¡¼¥¹¤ÎFSS¤òÀßÄꤷ¤ÆÆ°ºî³Îǧ¤ò¤¹¤ë¡£
¡¡user.root¥×¥í¥¸¥§¥¯¥È¤Î project.cpu-shares ¤Î limitÃÍ¡¡¡§¡¡80
¡¡test¥×¥í¥¸¥§¥¯¥È¤Î project.cpu-shares ¤Î limitÃÍ¡¡¡§¡¡20
¡ÚÀßÄêÆâÍÆ¡Û
¢£ FSS (Fair Share Scheduling) ¤Î³Îǧ
¡¡¢ª
¹½À®ÊýË¡¤Ï
¤³¤Á¤é
#
cat /etc/dispadmin.conf
#
# /etc/dispadmin.conf
#
# Do NOT edit this file by hand -- use dispadmin(1m) instead.
#
DEFAULT_SCHEDULER=FSS
¥·¥¹¥Æ¥àÁ´ÂΤÇFSS¤¬Í¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ë¡£
¢£ ¥×¥í¥»¥Ã¥µ¥»¥Ã¥È¤È¥ê¥½¡¼¥¹¥×¡¼¥ë¤Î¹½À®¾õÂÖ
¡¡¢ª
¹½À®
ÊýË¡¤Ï¤³¤Á¤é
#
pooladm
system domain-a
string system.comment
int
system.version 1
boolean system.bind-default
true
int
system.poold.pid 378
pool zone1-pool
int pool.sys_id 1
boolean pool.active true
boolean pool.default false
int pool.importance 1
string pool.comment
pset zone1-pset
pool pool_default
int pool.sys_id 0
boolean pool.active true
boolean pool.default true
int pool.importance 1
string pool.comment
pset pset_default
pset zone1-pset
int pset.sys_id 1
boolean pset.default false
uint pset.min 1
uint pset.max 3
string pset.units population
uint pset.load 0
uint pset.size 3
string pset.comment
cpu
int cpu.sys_id 1
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 0
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 2
string cpu.comment
string cpu.status on-line
pset pset_default
int pset.sys_id -1
boolean pset.default true
uint pset.min 1
uint pset.max 65536
string pset.units population
uint pset.load 5
uint pset.size 1
string pset.comment
cpu
int cpu.sys_id 3
string cpu.comment
string cpu.status on-line
¾åµ¤Î¤è¤¦¤Ë zone1-pset ¤Ë3CPU¡¢pset_default ¤Ë£±CPU¤¬³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¡£
¤Þ¤¿¡¢zone1-pool ¤Ï zone1-pset¤ËÂбþ¤·¤Æ¤¤¤ë¡£
¢£ ¥í¡¼¥«¥ë¥¾¡¼¥ó¤ËÂФ¹¤ë¥ê¥½¡¼¥¹¥×¡¼¥ë¤Î³ä¤êÅö¤Æ¾õÂÖ
¡¡¢ª
¹½À®Êý
Ë¡¤Ï¤³¤Á¤é
#
cd /etc/zones
#
ls
SUNWblank.xml SUNWdefault.xml
index
zone1.xml
zone2.xml zone3.xml
#
grep pool *
zone1.xml:<zone name="zone1" zonepath="/export/zone1"
autoboot="true"
pool="zone1-pool">
zone2.xml:<zone name="zone2" zonepath="/export/zone2"
autoboot="true"
pool="pool_default">
zone3.xml:<zone name="zone3" zonepath="/export/zone3"
autoboot="true"
pool="zone1-pool">
#
¾åµ¤Î¤è¤¦¤Ë zone1 ¤È zone3 ¤Ï zone1-pool ¤òÍøÍѤ¹¤ë¡£
¤Þ¤¿¡¢zone2 ¤Ï pool_default ¤òÍøÍѤ¹¤ë¡£
¢£ ¥í¡¼¥«¥ë¥¾¡¼¥ó¤Î FSS ¤Î½Å¤ßÉÕ¤±(zone.cpu-shares¤ÎlimitÃÍ)³Îǧ
¡¡¢ª
¹½À®Êý
Ë¡¤Ï¤³¤Á¤é
#
egrep "zone.cpu-shares|limit"
/etc/zones/*
/etc/zones/zone1.xml: <rctl name="zone.cpu-shares">
/etc/zones/zone1.xml: <rctl-value
priv="privileged"
limit="20"
action="none"/>
/etc/zones/zone2.xml: <rctl name="zone.cpu-shares">
/etc/zones/zone2.xml: <rctl-value
priv="privileged"
limit="80"
action="none"/>
/etc/zones/zone3.xml: <rctl name="zone.cpu-shares">
/etc/zones/zone3.xml: <rctl-value
priv="privileged"
limit="80"
action="none"/>
¤³¤ÎÀßÄêÎã¤Î¾ì¹ç¡¢Æ±¤¸pool¤òÍøÍѤ¹¤ë zone1 ¤È zone3 ¤ÎÃͤγä¹ç¤¬ FSS ¤Ç¤ÎCPUÇÛʬ¤Ë¤Ê¤ë¡£¤³¤Î¾ì¹ç¡¢ºÇÀ¹´ü¤Ç
zone1¤¬ 20% ¡¢zone3¤¬ 80% ¤ÎCPU¥ê¥½¡¼¥¹¤ÎÍøÍѤòÊݾڤµ¤ì¤ë¡£zone1-pset ¤Ï
3CPU(Á´ÂΤÎ75%)¤ò°®¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢global¥¾¡¼¥ó¤«¤é¤ß¤¿ºÇÀ¹´ü¤Ç¤Îzone1 ¤ÎÍøÍÑΨ¤Ï 15% (75%¤Î£²³ä)¡¢zone3
¤ÎÍøÍÑΨ¤Ï 60% (75%¤Î£¸³ä)¤È¤Ê¤ë¡£
¢£ zone1¤Î¥×¥í¥¸¥§¥¯¥È¤Î FSS ¤Î½Å¤ßÉÕ¤±(project.cpu-shares¤ÎlimitÃÍ)³Îǧ
#
zlogin zone1
[¥¾¡¼¥ó 'zone1' pts/2 ¤ËÀܳ¤µ¤ì¤Þ¤·¤¿]
Last login: Wed Mar 16 16:23:05 on pts/4
Sun Microsystems Inc. SunOS
5.10 Generic January 2005
#
cat /etc/project
system:0::::
user.root:1::::
project.cpu-shares=(privileged,80,none)
noproject:2::::
default:3::::
group.staff:10::::
test:100::root::
project.cpu-shares=(privileged,20,none)
¤³¤³¤Þ¤Ç¤ÎÀßÄêÎã¤Ç¡¢zone1¤Ç¤ÏºÇÀ¹´ü¤Ç¤â¥·¥¹¥Æ¥àÁ´ÂΤÎ15%¤ÎCPU¥ê¥½¡¼¥¹¤ò³ÍÆÀ¤Ç¤¤ë¾õÂ֤ˤʤäƤ¤¤ë¡£¤µ¤é¤Ë¾åµÀßÄê¤ò¤¹¤ë¤³¤È¤Ç¥í¡¼¥«¥ë
¥¾¡¼¥óÆâ¤Ç¤Î¥×¥í¥¸¥§¥¯¥È¥Ù¡¼¥¹¤ÎFSS¤¬²Äǽ¤Ë¤Ê¤ë¡£¾åµÎã¤Ç¤Ïuser.root¤È¤¤¤¦¥×¥í¥¸¥§¥¯¥È¤Ë80%¡¢test¤È¤¤¤¦¥×¥í¥¸¥§¥¯¥È¤Ë20%¤Î
ÇÛʬ¤Ë¤·¤Æ¤¤¤ë¡£
¢£ zone ¤Îưºî³Îǧ
#
zoneadm list -vc
ID
NAME
STATUS PATH
0
global
running /
1
zone1
running /export/zone1
2
zone3
running /export/zone3
3
zone2
running /export/zone2
¡Ú¸¡¾Ú·ë²Ì¡Û
zone1, zone2, zone3¤Ç¤½¤ì¤¾¤ì£´¤Ä¤º¤Ä John the Ripper ¤È¤¤¤¦¥Ñ¥¹¥ï¡¼¥É¥¯¥é¥Ã¥¥ó¥°¥Ä¡¼¥ë¤ò¼Â¹Ô¤·¤¿¡£zone1¤Ç¤Ï¥×¥í¥¸¥§¥¯¥È¥Ù¡¼¥¹¤ÎFSSÀßÄê¤ò³Î¤«¤á¤ë¤¿¤á¡¢¥×¥í¥¸¥§¥¯¥È¤òtest¤ËÊѹ¹¤·¤Æ¤µ¤é¤Ë£´¤Ä¤Î john ¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¡£
¡Ê¤³¤ì¤ÏCPU¤ËÉé²Ù¤ò¤«¤±¤ë¤³¤È¤¬ÌÜŪ¤Ê¤Î¤ÇCPU¥Ð¥¦¥ó¥É¤Ê¥×¥í¥°¥é¥à¤Ç¤¢¤ì¤Ð²¿¤Ç¤â¤è¤¤¡£)
¢£ global-zone¤Ç¤Îprstat -Z¤Î·ë²Ì
PID USERNAME SIZE RSS STATE PRI
NICE TIME CPU PROCESS/NLWP
8874 root 6768K 6368K
run 5 0
0:01:09 12% john/1
8877 root 6768K 6368K
run 8 0
0:00:46 11% john/1
8880 root 6768K 6368K
run 8 0
0:00:33 11% john/1
8883 root 6768K 6368K
cpu1 11 0 0:00:22 9.6%
john/1
8886 root 6768K 6368K
run 7 0
0:00:14 8.1% john/1
8889 root 6768K 6368K
run 11 0 0:00:08
6.3% john/1
8876 root 6768K 6304K
run 7 0
0:00:22 4.5% john/1
8873 root 6768K 6304K
run 7 0
0:00:36 4.5% john/1
8879 root 6768K 6304K
run 1 0
0:00:14 4.1% john/1
8882 root 6768K 6304K
run 1 0
0:00:09 4.0% john/1
8875 root 6768K 6368K
cpu2 11 0 0:00:26 3.2%
john/1
8885 root 6768K 6304K
run 7 0
0:00:06 3.2% john/1
8872 root 6768K 6368K
cpu0 14 0 0:00:36 3.1%
john/1
8888 root 6768K 6304K
run 2 0
0:00:04 3.0% john/1
8878 root 6768K 6368K
run 4 0
0:00:11 2.9% john/1
ZONEID NPROC SIZE RSS
MEMORY TIME CPU ZONE
8 42
172M 114M 1.4% 0:03:24
57% zone3
6 42
171M 108M 1.3% 0:01:42
23% zone2
5 42
167M 102M 1.2% 0:01:41
16% zone1
0 58
324M 115M 1.4% 0:02:10 0.8% global
ÍýÁÛÃͤÏ
zone1 = 75% x 20% -> 15%
zone2 = 75% x 80% -> 60%
zone3 = 25% x 100%(80) -> 25%
¤Ê¤Î¤Ç¤Û¤ÜÀßÄêÄ̤ê¤Î·ë²Ì¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ë¡£
¢£ zone1¤Ç¤Îprstat -J¤Î·ë²Ì
PID USERNAME SIZE RSS STATE PRI
NICE TIME CPU PROCESS/NLWP
8914 root 6768K 6368K
cpu2 21 0 0:00:18 4.4%
john/1
8912 root 6768K 6368K
run 15 0 0:00:20
4.3% john/1
8911 root 6768K 6368K
run 14 0 0:00:21
4.1% john/1
8913 root 6768K 6368K
run 15 0 0:00:18
4.0% john/1
8923 root 6768K 6368K
run 1 0
0:00:03 1.9% john/1
8922 root 6768K 6368K
run 9 0
0:00:04 1.4% john/1
8921 root 6768K 6368K
run 12 0 0:00:05
1.4% john/1
8924 root 6192K 5128K
cpu1 59 0 0:00:00 0.1%
prstat/1
3472 root 4288K 2984K sleep
59 0 0:00:00 0.0% nscd/26
3370 root 11M 6352K
sleep 29 0 0:00:03 0.0%
svc.startd/12
4221 root 6376K 2168K sleep
59 0 0:00:00 0.0% sendmail/1
3961 root 2904K 2016K sleep
58 0 0:00:00 0.0% bash/1
3581 root 1984K 912K
sleep 58 0 0:00:00 0.0%
smcboot/1
3672 root 2536K 1552K sleep
59 0 0:00:00 0.0% snmpdx/1
3685 root 3864K 2184K sleep
59 0 0:00:00 0.0% snmpXdmid/2
PROJID NPROC SIZE RSS
MEMORY TIME CPU PROJECT
1
6 31M 28M 0.4%
0:01:17
17% user.root
100
5 27M 25M 0.3% 0:00:12
4.8% test
0 34
129M 67M 0.8% 0:00:14 0.0% system
¤³¤Á¤é¤â¤Û¤È¤ó¤ÉÍýÁÛÄ̤ê1:4¤ÎÈæÎ¨(20:80)¤Ç¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤µ¤ì¤Æ¤¤¤ë¡£
global-zone¤«¤é¸«¤¿CPU¤Î»ÈÍÑΨ¤Ï15%ÄøÅÙ¤À¤¬¡¢
zone1¤Ç¸«¤ë¤È¡¢³ä¤êÅö¤Æ¤é¤ì¤¿3CPU(75%)Æâ¤Ç¤Î»ÈÍÑΨ¤Ç¤¢¤ë¤¿¤á¡¢
¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸¤Î¹ç·×¤Ï15%¤òͤ¨¤Æ¤¤¤ë¡£
¤³¤ì¤ÏÍýÁÛŪ¤Ê·ë²Ì¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
¡Ú¥¢¥ó¥±¡¼¥È¡Û
¤³¤Îµ»ö¤Ï¤¿¤á¤Ë¤Ê¤ê¤Þ¤·¤¿¤«¡©
¡¡¡¡¡¡¤Ï¤¤¡¡¡¡/¡¡¡¡¤¤¤¤¤¨