AIX交換空間管理與查看... 2
一, 交換磁盤空間概念... 2
1.1 虛擬內(nèi)存... 2
1.2 虛擬內(nèi)存管理器(VMM) 2
1.3 交換(分頁)空間概念... 3
1.4請求分頁... 3
二, 查看交換磁盤空間... 4
2.1 lsps命令... 4
2.2 使用vmo命令檢查AIX如何處理分頁空間分配... 4
2.3 vmstat監(jiān)視分頁控件的顛簸... 5
2.4 svmon檢查正在使用交換空間的進(jìn)程... 5
2.5 交換空間檢查實例... 8
三, 管理交換磁盤空間... 9
四, 優(yōu)化交換磁盤空間... 9
AIX交換空間管理與查看
AIX的內(nèi)存頁面大小為4K, 是虛擬內(nèi)存管理(VMM)的最小單位. 頁面空間也可以被稱為交換空間(paging space), 創(chuàng)建在屬性類型為paging的邏輯卷(logic volume LV)上. 交換空間是一項很重要的設(shè)備. AIX kernel需要利用paging space來管理虛擬內(nèi)存. 系統(tǒng)安裝時創(chuàng)建的默認(rèn)頁面LV是hdisk0上的hd6, 也叫主交換空間.
AIX5L默認(rèn)采用交換空間的延遲分配策略(deferred page space allocation), 利用環(huán)境變量psalloc來控制內(nèi)存的機(jī)制與頁面的分配策略, 缺省設(shè)置是late. 在這種設(shè)置下, 知識需要用到的時候, 才去分配交換空間, 正常情況下, 不需要很大的交換空間, 所以適合大內(nèi)存的系統(tǒng), 可以減少很多paging space資源的浪費.
一, 交換磁盤空間概念 1.1 虛擬內(nèi)存內(nèi)存在計算機(jī)中的作用很大,電腦中所有運行的程序都需要經(jīng)過內(nèi)存來執(zhí)行,如果執(zhí)行的程序很大或很多,就會導(dǎo)致內(nèi)存消耗殆盡。為了解決這個問題,Windows中運用了虛擬內(nèi)存技術(shù),即拿出一部分硬盤空間來充當(dāng)內(nèi)存使用,當(dāng)內(nèi)存占用完時,電腦就會自動調(diào)用硬盤來充當(dāng)內(nèi)存,以緩解內(nèi)存的緊張。舉一個例子來說,如果電腦只有128MB物理內(nèi)存的話,當(dāng)讀取一個容量為200MB的文件時,就必須要用到比較大的虛擬內(nèi)存,文件被內(nèi)存讀取之后就會先儲存到虛擬內(nèi)存,等待內(nèi)存把文件全部儲存到虛擬內(nèi)存之后,跟著就會把虛擬內(nèi)里儲存的文件釋放到原來的安裝目錄里了。
允許設(shè)置的虛擬內(nèi)存最小值為2MB,最大值不能超過當(dāng)前硬盤的剩余空間值,同時也不能超過操作系統(tǒng)的內(nèi)存尋址范圍。
1.2 虛擬內(nèi)存管理器(VMM)VMM服務(wù)于來自系統(tǒng)以及應(yīng)用程序的內(nèi)存請求. 虛擬內(nèi)存段以頁為單位進(jìn)行分區(qū), 每個頁面大小為4KB.VMM就是用來管理這些存儲頁面.
1, 實際內(nèi)存管理
在AIX中,虛擬內(nèi)存段被分成4096字節(jié)大小的頁,物理內(nèi)存則被劃分為4096字節(jié)大小的頁幀(page frame),VMM主要有以下兩個主要功能:
(1) 管理頁幀的分配
(2) 解析對當(dāng)前沒有調(diào)入RAM中的虛擬內(nèi)存頁的引用
為了完成上述功能,VMM維護(hù)一個可用幀列表,并且使用一個頁面替換算法決定哪些當(dāng)前在RAM中的虛擬內(nèi)存頁使用的頁幀將被分配到可以可用幀列表。頁面替換算法將考慮永久段(Persistent segment)和工作段(Working segment)的分配、頁交換和VMM閾值等因素。
2, 永久段(Persistent segment)和工作段(Working segment)
AIX 區(qū)分不同的存儲段類型。理解不同的存儲段類型,特別是工作段和永久段的區(qū)別非常重要。
永久段在磁盤上有一個永久的存儲位置。含有不可編輯數(shù)據(jù)的文件或者只讀的運行程序被映射到持久段。VMM 參數(shù)控制什么時候分配給永久段的RAM頁幀可以被重寫,并且用于存儲新的數(shù)據(jù)。
工作段是臨時性的,僅在它們被某個進(jìn)程使用的時候存在,并且沒有固定的磁盤位置。進(jìn)程堆棧以及數(shù)據(jù)區(qū),共享庫文本被映射到工作段。當(dāng)工作段數(shù)據(jù)也不能存在于“實”存中的時候,他們被保存在磁盤上的頁交換空間。程序退出執(zhí)行,所有工作段占用的頁面被返回。
3, VMM 內(nèi)存調(diào)用控制機(jī)制
當(dāng)一個進(jìn)程引用一個在磁盤上的虛擬內(nèi)存頁,被引用的頁先要換到頁幀中,如果內(nèi)存已經(jīng)滿了,這可能導(dǎo)致一個或更多的頁從頁幀中換出,以騰出空間。這種情況一般發(fā)生在可用頁幀數(shù)已經(jīng)很低的情況。而VMM將使用前述頁交換算法來滿足系統(tǒng)對內(nèi)存的需要。
一個有效的頁交換算法要保持當(dāng)前活動進(jìn)程所使用的頁總是在RAM中,而非活動進(jìn)程使用的存儲頁將被移出。但是當(dāng)RAM不足的時候,選擇移出頁將很困難,因為被移出的頁可能很快又要被引用,這導(dǎo)致一些頁面被頻繁的換入換出。系統(tǒng)大部分時間在做頁交換而不是執(zhí)行進(jìn)程指令。VMM使用存儲器調(diào)用控制算法來檢測這種情況,并予以糾正。
1.3 交換(分頁)空間概念什么是交換(分頁)空間?它是與 VMM 有關(guān)的。VMM 使用交換(分頁)空間存儲沒有使用活動RAM 的進(jìn)程。分頁空間本身是一個特殊的邏輯卷,它存儲了當(dāng)前不訪問的信息。您必須確保您的系統(tǒng)擁有足夠的分頁空間。如果分頁空間過小,整個進(jìn)程可能會丟失,并且當(dāng)所有的空間都占滿后,系統(tǒng)可能會崩潰。盡管值得再次說明,分頁空間是 VMM 中的一部分,但是更重要的是真正地理解內(nèi)核如何將進(jìn)程調(diào)入到 RAM 中,過多的分頁肯定會對性能造成影響。AIX 通過將內(nèi)核與 VMM 緊密集成在一起,實現(xiàn)了一種稱為請求分頁的方法。
1.4請求分頁在這個部分中,我介紹了 AIX 如何處理分頁,給出了交換和分頁的定義,并深入地研究了分頁空間分配的幾種不同模式。這些概念可以幫助您理解后續(xù)有關(guān)監(jiān)視、配置和優(yōu)化的部分。
大多數(shù)管理員都認(rèn)為分頁是一件很麻煩的事情。實際上,分頁是 AIX 所完成的任務(wù)中非常必要的一部分,這是由于 AIX 內(nèi)核與 VMM 及其請求分頁的實現(xiàn)進(jìn)行了緊密的集成。請求分頁的工作原理是,內(nèi)核一次僅加載部分頁面到實際內(nèi)存中。當(dāng) CPU 需要另一個頁面時,它會到 RAM 中查找。如果無法在 RAM 中找到這個頁面,則出現(xiàn)一次缺頁,然后向內(nèi)核發(fā)出信號以便從磁盤中加載更多的頁面到 RAM。請求分頁的一個優(yōu)點是,分頁空間不需要非常大,因為數(shù)據(jù)總是在分頁空間和 RAM 之間不斷地交換。在較早的 UNIX? 系統(tǒng)中,將分頁預(yù)先分配到磁盤,無論使用還是不使用它們。這使得所分配的磁盤空間可能永遠(yuǎn)不會被使用。從本質(zhì)上說,請求分頁可以避免盲目地分配磁盤空間。應(yīng)該使得進(jìn)程的交換最少,因為許多任務(wù)可能存儲在 RAM 中。的確如此,因為進(jìn)程(頁面)只有一部分存儲在 RAM 中。
交換指的是什么呢?盡管分頁和交換通??梢曰Q使用,但它們之間存在細(xì)微的區(qū)別。如前所述,在進(jìn)行分頁時,進(jìn)程的部分內(nèi)容將在磁盤和 RAM 之間來回移動。當(dāng)發(fā)生交換時,會將整個進(jìn)程來回移動。為了支持這種情況,在將進(jìn)程移動到分頁空間之前,AIX 會掛起整個進(jìn)程。只有在將進(jìn)程交換回 RAM 之后,才能夠繼續(xù)執(zhí)行它。出現(xiàn)這樣的情況并不是很好,您應(yīng)該盡量防止交換的發(fā)生,交換可能會導(dǎo)致另一種稱為顛簸的情況(稍后將介紹這個內(nèi)容)發(fā)生。
二, 查看交換磁盤空間 2.1 lsps命令Lsps主要用來顯示調(diào)頁空間的特征.
lsps { -s | [ -c | -l ] { -a | -t { lv | nfs } | PagingSpace } }
1, -a, 指定要給出的所有調(diào)頁空間的特征.
# lsps -a
Page Space Physical Volume Volume Group Size %Used Active Auto Type
hd6 hdisk0 rootvg 8192MB 13 yes yes lv
2, -c, 指定輸出應(yīng)該使用冒號格式. 在邏輯分區(qū)中以冒號格式給出調(diào)頁空間大小
# lsps -c -a
#Psname:Pvname:Vgname:Size:Used:Active:Auto:Type
hd6:hdisk0:rootvg:32:13:y:y:lv
3, -l, 指定輸出應(yīng)該使用表格式
4, 指定要給出的所有調(diào)頁空間的概要特征. 如果指定-s標(biāo)記, 忽略所有其他標(biāo)記
# lsps -as
Total Paging Space Percent Used
8192MB 13%
2.2 使用vmo命令檢查AIX如何處理分頁空間分配# vmo -a | grep def
defps = 1
vmo命令用來管理虛擬內(nèi)存管理器可調(diào)參數(shù). –a顯示所有可調(diào)參數(shù)的當(dāng)前, 重新引導(dǎo)或永久值.
上述顯示defps=1說明使用了這種缺省的方法(延遲的頁面空間分配)。要禁用這個策略,您需要將參數(shù)設(shè)置為 0。這將使得系統(tǒng)使用晚分頁空間分配策略。晚分頁空間分配策略會在 RAM 中相應(yīng)的頁面被修改時才分配分頁磁盤塊。這種方法通常用于那些性能比可靠性更加重要的環(huán)境。在本文所介紹的場景中,程序可能會因為缺少內(nèi)存而運行失敗。那么早頁面空間分配又如何呢?如果您希望確保進(jìn)程不會因為較低的分頁情況而終止,通??梢允褂眠@種策略。早頁面空間分配策略可以預(yù)先分配分頁空間。這是與晚分頁空間分配策略截然相反的。對于可靠性要求很高的環(huán)境,可以使用這種策略。啟用這種策略的方法是將 PSALLOC 環(huán)境變量設(shè)置為 early (PSALLOC=early)
2.3 vmstat監(jiān)視分頁控件的顛簸# vmstat 2 4
System configuration: lcpu=4 mem=3824MB
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
0 0 479301 2384 0 0 0 0 0 0 5 1045 74 0 0 99 0
0 0 479300 2385 0 0 0 0 0 0 6 965 86 0 0 99 0
0 0 479300 2385 0 0 0 0 0 0 5 976 90 0 0 99 0
0 0 479300 2385 0 0 0 0 0 0 6 1026 79 0 0 99 0
欄
說明
Avm
系統(tǒng)使用的活動虛擬內(nèi)存量(單位為4K), 不包括文件頁面
Fre
空閑內(nèi)存列表的大小, 一般不應(yīng)該小于vmo中設(shè)置的minfree.
Pi
從交換空間調(diào)入的頁面數(shù)
Po
調(diào)出到交換空間的頁面數(shù)
2.4 svmon檢查正在使用交換空間的進(jìn)程Svmon命令主要用來捕獲并分析虛擬內(nèi)存快照.
該命令報告進(jìn)程的語法為
svmon -P [ PID1... PIDN ] [ -r [ -n | -s ] [ -w | -f | -c ] [ -t Count ] [ -u | -p | -g | -v ] [ -i Interval [ NumIntervals] ] [ -l ] [ -j ] [ -z ] [ -m ] [ -q ]
svmon命令是虛擬內(nèi)存的監(jiān)視命令, svmon可以用于確認(rèn)某個程序, 用戶, 內(nèi)存段使用內(nèi)存或虛存的情況. 它事實上是調(diào)用svmon back命令, 在使用svmon命令之前, 必須確定svmon back命令可用, 該命令位置為/usr/lib/perf/svmon_back
svmon在運行過程中可以被中斷, 所以,它無法真正成為內(nèi)存使用情況的快照. 在非常繁忙的系統(tǒng)中, svmon收集的數(shù)據(jù)和真實的數(shù)據(jù)有所差距, 在svmon進(jìn)程搜集的過程中, vmm可能已經(jīng)發(fā)生改動了.
因為svmon使用的全是vmm中的數(shù)據(jù), 而vmm對內(nèi)存的視圖是基于內(nèi)存段的, 所以理解svmon的輸出, 必須先理解段的概念.
段是一組頁的集合, 每個段為256M, 而每頁為4KB的虛存, 每幀為4KB的實際內(nèi)存, 每個段可以被多個進(jìn)程使用, 每個段屬于以下五種類型的一種.
Persistent(持久段): 存放JFS文件或目錄.
Working(工作段): 存放進(jìn)程數(shù)據(jù)或共享內(nèi)存段.
Client(): 用于實現(xiàn)虛擬文件系統(tǒng)如NFS, CD-ROM文件系統(tǒng)和JFS2;
Mapping(): 用于實現(xiàn)文件和內(nèi)存之間的映射關(guān)系.
Real memory mapping: 用于對IO空間的訪問.
注意, 在段的描述中, 如果paging space使用的節(jié)中有一橫(-) , 表明該段未使用交換區(qū), working段可能使用交換區(qū), 但persistent和client不會使用交換區(qū).
1, 列出使用實際內(nèi)存最多的三個進(jìn)程.
# svmon -uP -t 3|grep -p Pid | grep '^.*[0-9]'
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
442460 oracle 271187 7953 179711 275344 Y N N
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
1155298 oracle 264700 7953 176642 272827 Y N N
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
323600 oracle 264684 7953 178168 274243 Y N N
由上面的顯示我們可以計算pid=442460的進(jìn)程使用的實際內(nèi)存為 271187*4K = 1059M
欄
說明
PID
表示進(jìn)程標(biāo)識符
Command
進(jìn)程正在運行的命令
Inuse
進(jìn)程使用的段中的實際內(nèi)存的頁面總數(shù)(計算大小應(yīng)乘以4092B)
Pin
固定內(nèi)存: 進(jìn)程使用的段中固定內(nèi)存的頁面總數(shù)
Pgsp
交換空間: 進(jìn)程使用的段在調(diào)頁空間上保留或使用的頁面總數(shù)
Virtual
在進(jìn)程虛擬空間中分配的頁面總數(shù)
64-bit
是64位進(jìn)程(Y)還是32位進(jìn)程(N)
Mthrd
進(jìn)程是否為多線程(Y)
16MB
進(jìn)程的大頁面狀態(tài). “M”表示強(qiáng)制性, “Y”表示進(jìn)程使用或已經(jīng)使用大頁面段, “N”表示進(jìn)程不使用大頁面.
2, 列出使用交換區(qū)最多的三個進(jìn)程
svmon -gP -t 5 | grep -p Pid | grep '^.*[0-9]'
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
462924 oracle 264568 7953 188139 283991 Y N N
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
442460 oracle 271480 7953 179707 275342 Y N N
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
323600 oracle 264804 7953 178164 274241 Y N N
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
1179830 oracle 251210 7953 177081 272633 Y N N
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
299146 oracle 251246 7953 177065 272687 Y N N
由上面的顯示計算出, 使用交換空間最大的進(jìn)程用到的交換區(qū)間大小為 188139 * 4092 = 734 MB
3, 查看進(jìn)程462924使用了哪些文件
# svmon -pP 462924
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
462924 oracle 264566 7953 188139 283989 Y N N
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
0 0 work kernel segment s 8068 7931 3849 12181
40a54 f00000002 work process private s 27 22 3 29
6cabf 8fffffff work private load data s 0 0 36 36
18026 9ffffffe work shared library s 13 0 14 14
30a0 90000000 work shared library text s 1062 0 68 2759
1c843 - clnt /dev/fslv03:92 s 2 0 - -
84a6 - clnt /dev/fslv01:76408 s 0 0 - -
18482 - clnt /dev/fslv01:143871 s 2 0 - -
204ac - clnt /dev/fslv01:76409 s 0 0 - -
4525 70000003 work default shmat/mmap s 0 0 0 0
244ad - clnt /dev/fslv03:76 s 6 0 - -
184e2 70000005 work default shmat/mmap s 38968 0 21088 40950
8926 - clnt /dev/fslv03:88 s 2 0 - -
c527 - clnt /dev/fslv01:191039 s 0 0 - -
50830 - clnt /dev/fslv03:78 s 2 0 - -
344a9 70000007 work default shmat/mmap s 39557 0 25293 45057
10540 - clnt /dev/fslv03:75 s 2 0 - -
44475 - clnt /dev/fslv03:91 s 635 0 - -
8566 - clnt /dev/fslv03:87 s 528 0 - -
14941 - clnt /dev/fslv03:85 s 2 0 - -
3c4ab - clnt /dev/fslv03:77 s 0 0 - -
408b4 - clnt /dev/fslv03:81 s 2 0 - -
444b5 - clnt /dev/fslv03:71 s 36 0 - -
4c497 - clnt /dev/fslv01:191040 s 0 0 - -
30508 70000006 work default shmat/mmap s 62488 0 34002 65520
484b6 - clnt /dev/fslv03:70 s 36 0 - -
30748 - clnt /dev/fslv03:79 s 6 0 - -
34509 70000008 work default shmat/mmap s 57007 0 54623 59208
3ca6b 11 work text data BSS heap s 318 0 12706 13052
4c4b7 - clnt /dev/fslv03:69 s 60 0 - -
404f4 - clnt /dev/fslv03:68 s 2 0 - -
7881a - clnt /dev/fslv03:80 s 6 0 - -
4c4d7 - clnt /dev/fslv03:66 s 8802 0 - -
3852a - clnt /dev/fslv01:76412 s 0 0 - -
40514 70000002 work default shmat/mmap s 0 0 0 0
484f6 - clnt /dev/fslv03:67 s 600 0 - -
6049c 10 clnt text data BSS heap, s 8518 0 - -
/dev/fslv01:73964
70478 - clnt /dev/fslv03:84 s 2 0 - -
604bc - clnt /dev/fslv03:86 s 2 0 - -
8226 9fffffff clnt USLA text,/dev/hd2:2165 s 9 0 - -
48536 80020014 work USLA heap s 0 0 104 104
70498 - clnt /dev/fslv01:190026 s 0 0 - -
3c56b - clnt /dev/fslv03:89 s 6 0 - -
684be 70000009 work default shmat/mmap s 31632 0 33846 38930
7c47b - clnt /dev/fslv03:82 s 1370 0 - -
784ba - clnt /dev/fslv03:90 s 2 0 - -
54951 9001000a work shared library data s 18 0 48 89
744d9 - clnt /dev/fslv03:65 s 980 0 - -
50570 - clnt /dev/fslv03:83 s 0 0 - -
c687 70000000 mmap maps 1 source(s) s 0 0 - -
6851e 70000004 work default shmat/mmap s 0 0 0 0
20a4c 8001000a work private load data s 1 0 146 146
3822a 90020014 work shared library s 58 0 95 96
34a49 70000001 work default shmat/mmap s 3580 0 553 4076
48a16 ffffffff work application stack s 8 0 6 14
4001 9ffffffd work shared library s 141 0 1659 1728
欄
說明
VSid
虛擬段標(biāo)識符, 在VMM中的唯一段
Esid
有效的段標(biāo)識符, 只有在段屬于進(jìn)程空間時才有效. 如果vsid段被幾個進(jìn)程映射, 但具有不同的sid值, 那么該字段包含”-“.
Type
段的類型
Description
段的文本描述, 列的內(nèi)容取決于段的類型和用途
Psize
表示該段是否使用大頁面
Inuse
段中的實際內(nèi)存頁數(shù)
Pin
段中的固定內(nèi)存頁數(shù)
Pgsp
該段在調(diào)頁空間上的頁數(shù)
Virtual
分配給段的虛擬空間的頁數(shù)
2.5 交換空間檢查實例1, 使用swap命令查看交換磁盤空間信息
# swap -l
device maj,min total free
/dev/hd6 10, 2 8192MB 7166MB
結(jié)果說明, 系統(tǒng)中定義了一個交換分區(qū). 分區(qū)使用了8192-7166=1026MB的空間.
2, 檢查當(dāng)前交換空間剩余情況
# lsps -a
Page Space Physical Volume Volume Group Size %Used Active Auto Type
hd6 hdisk0 rootvg 8192MB 13 yes yes lv
如果上面顯示的%used較高, 則可能會出現(xiàn)危險. 這時需要檢查系統(tǒng)登錄時間, 如果登錄已經(jīng)很久了, 可以考慮重啟系統(tǒng)以輕快數(shù)據(jù)庫緩存, 這樣就可以釋放虛擬內(nèi)存.
3, uptime檢查系統(tǒng)啟動時間
# uptime
05:28PM up 181 days, 16:15, 1 user, load average: 0.00, 0.00, 0.00
三, 管理交換磁盤空間可以通過如下命令創(chuàng)建一個交換空間
#mkps -s’16′ -n -a datavg hdisk2
其中-s表示pp個數(shù),-n表示啟動后是否自動激活,-a表示是否當(dāng)時激活。
可以采用如下命令改變交換空間大小
新增加10個pp
#chps -s’10′ paging00
減少10個pp
#chps -d’10′ paging00
shrinkps: Temporary paging space paging01 created.
shrinkps: Paging space paging00 removed.
shrinkps: Paging space paging00 recreated with new size.
對于5L以上的版本,可以直接用chps -d來操作hd6
#chps -d’10′ hd6
shrinkps: Temporary paging space paging00 created.
shrinkps: New boot image created with temporary paging space.
shrinkps: Paging space hd6 removed.
shrinkps: Paging space hd6 recreated with new size.
shrinkps: New boot image created with resized paging space.
如果要使交換空間處于非活動狀態(tài),可以采用
#swapoff /dev/’paging00′
相反,處于活動狀態(tài)可以采用
#swapon /dev/’paging00′
如果要刪除一個ps交換空間,必須先使這個空間處于非活動狀態(tài),然后采用命令rmps刪除。如
#rmps ‘paging00′
rmlv: Logical volume paging00 is removed.
四, 優(yōu)化交換磁盤空間系統(tǒng)究竟需要多大的交換空間?
首先, 我們認(rèn)為將分頁空間的大小設(shè)置為RAM的兩倍(以前的基本原則). 通常來說, 如果我的系統(tǒng)擁有超過4GB的內(nèi)存, 我會按照RAM的大小來創(chuàng)建分頁空間.在投入運行之后, 要經(jīng)常監(jiān)視系統(tǒng), 如果看到分頁空間的利用率從來都沒有接近過百分之五十, 就不需要添加額外的空間. Oracle為AIX提供的文檔推薦設(shè)置交換空間為RAM大小的一半加上4GB, 但是上限為32GB.