HP-UX下ORACLE10gR2的共享記憶體分段
實驗物件:
$ /usr/contrib/bin/machinfo Memory: 89914 MB (87.81 GB) Firmware info: Platform. info: OS info:
CPU info:
11 Intel(R) Itanium 2 9100 series processors (1.6 GHz, 18 MB)
533 MT/s bus, CPU version A1
22 logical processors (2 per socket)
Firmware revision: 9.048
FP SWA driver revision: 1.18
IPMI is supported on this system.
BMC firmware revision: 4.01
Model: "ia64 hp server rx8640"
Machine ID number: b24e5d6e-acdd-11de-9bbf-a49fa173a3ab
Machine serial number: SGH49342W6
Nodename: GDWDB
Release: HP-UX B.11.31
Version: U (unlimited-user license)
Machine: ia64
ID Number: 2991480174
vmunix _release_version:
@(#) $Revision: vmunix: B.11.31_LR FLAVOR=perf
測試目的:
使用ipcs –mob觀察oracle使用ipc共享記憶體的情況,發現共享記憶體被分為多個記憶體段,按資料所說共享記憶體劃分為多個段對oralce的效能有重大的影響。因此本次此時的目的是測試核心引數是否設定正確。
測試原始碼:
#include
#include
#include
#include
#define SHM_SIZE 21474836480
#define SHM_MODE 0600 /* user read/write */
char array[ARRAY_SIZE]; /* uninitialized data = bss */
int
main(void)
{
int shmid;
char *ptr, *shmptr;
key_t key = ftok(“/home/oracle/test”, ‘A’);
if ((shmid = shmget(key, SHM_SIZE, SHM_MODE | IPC_CREAT)) < 0)
printf("shmget error");
if ((shmptr = shmat(shmid, 0, 0)) == (void *)-1)
printf("shmat error");
printf("shared memory attached from %lx to %lx\n",
(unsigned long)shmptr, (unsigned long)shmptr+SHM_SIZE);
getc(stdin);
if (shmctl(shmid, IPC_RMID, 0) < 0)
printf("shmctl error");
}
cc +DD64 test.c test
1. 執行測試程式前
ipcs –mob:
$ ipcs -mob
IPC status from /dev/kmem as of Sun Sep 20 06:09:14 2009
T ID KEY MODE OWNER GROUP NATTCH SEGSZ
Shared Memory:
m 0 0x412006cb --rw-rw-rw- root root 0 348
m 1 0x4e0c0002 --rw-rw-rw- root root 2 61760
m 2 0x41241c5a --rw-rw-rw- root root 1 8192
m 3 0x00a5c581 --rw------- sfmdb users 7 10469376
m 4 0x412014fa --rw------- root root 1 4096
m 5 0x4918b784 --rw-r--r-- root root 0 22912
m 3047430 0x40244b22 --rw-rw-rw- mqm mqm 0 1000
m 32775 0x00000000 --rw-r----- oracle oinstall 19 6442450944
m 8 0x00000000 --rw-r----- oracle oinstall 19 6465085440
m 9 0x00000000 --rw-r----- oracle oinstall 19 6459228160
m 10 0x00000000 --rw-r----- oracle oinstall 19 2166505472
m 11 0xf4b45100 --rw-r----- oracle oinstall 19 45056
2. 測試程式分配20G的共享記憶體:
./test&
3. 執行測試程式後
ipcs –mob
$ ipcs -mob
IPC status from /dev/kmem as of Sun Sep 20 06:07:16 2009
T ID KEY MODE OWNER GROUP NATTCH SEGSZ
Shared Memory:
m 0 0x412006cb --rw-rw-rw- root root 0 348
m 1 0x4e0c0002 --rw-rw-rw- root root 2 61760
m 2 0x41241c5a --rw-rw-rw- root root 1 8192
m 3 0x00a5c581 --rw------- sfmdb users 7 10469376
m 4 0x412014fa --rw------- root root 1 4096
m 5 0x4918b784 --rw-r--r-- root root 0 22912
m 3047430 0x40244b22 --rw-rw-rw- mqm mqm 0 1000
m 32775 0x00000000 --rw-r----- oracle oinstall 18 6442450944
m 8 0x00000000 --rw-r----- oracle oinstall 18 6465085440
m 9 0x00000000 --rw-r----- oracle oinstall 18 6459228160
m 10 0x00000000 --rw-r----- oracle oinstall 18 2166505472
m 11 0xf4b45100 --rw-r----- oracle oinstall 18 45056
m 1900556 0x41140055 --rw------- oracle oinstall 1 21474836480
共享記憶體分配有兩種方式:私有方式和共享方式。私有方式只能由建立程式或子程式所共享,其他程式無法訪問,該方式的共享記憶體KEY=0x00000000。而共享方式的共享記憶體可以被其他程式所使用,並且使用KEY作為接入引數,如圖ID=11的共享記憶體段。
根據上圖分析oracle只劃分了1個共享方式的共享記憶體段(4K),而其他的使用私有方式分配。
通過測試,證明shmmax已經正確設定,系統支援分配足夠大的共享記憶體空間。
而oracle分配多段共享記憶體的原因推斷不是由於核心引數設定的問題,至少不是shmmax的設定問題,問題的根源也只能由oracle提供服務了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13605188/viewspace-615101/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows記憶體管理-分段Windows記憶體
- [Linux]共享記憶體Linux記憶體
- POSIX 共享記憶體記憶體
- Golang 共享記憶體Golang記憶體
- Linux共享記憶體的管理Linux記憶體
- 作業系統(八) -- 記憶體的分段與分頁作業系統記憶體
- QT之共享記憶體QT記憶體
- Qt共享記憶體QSharedMemoryQT記憶體
- nginx共享記憶體分析Nginx記憶體
- Linux共享記憶體(二)Linux記憶體
- nginx中共享記憶體的使用Nginx記憶體
- OpenResty 和 Nginx 的共享記憶體區是如何消耗實體記憶體的RESTNginx記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- PostgreSQL共享記憶體裡的內容(initCommunication)SQL記憶體
- Android匿名共享記憶體(Ashmem)原理Android記憶體
- PHP 的自帶記憶體共享 APCu 和 shmPHP記憶體
- 程序間通訊(3)-共享記憶體記憶體
- 程式間通訊之共享記憶體記憶體
- Linux:深入淺出 Linux 共享記憶體Linux記憶體
- Kubernetes中Pod間共享記憶體方案記憶體
- 有管理共享記憶體設計方法的具體實現記憶體
- 作為php瞭解一下共享記憶體的概念及優缺點PHP記憶體
- system-v IPC共享記憶體通訊記憶體
- Linux程式間通訊之共享記憶體Linux記憶體
- Golang併發之共享記憶體變數Golang記憶體變數
- [20190104]ipcs檢視共享記憶體段.txt記憶體
- Win10系統GPU共享記憶體怎麼關閉?Win10系統GPU共享記憶體的關閉方法Win10GPU記憶體
- [20210412]分析會話佔用的共享記憶體段.txt會話記憶體
- C++ 共享記憶體ShellCode跨程式傳輸C++記憶體
- linux mmap應用與驅動共享記憶體Linux記憶體
- 資料庫實現原理#6(共享記憶體)資料庫記憶體
- docker下netcore記憶體dumpDockerNetCore記憶體
- 多核異構模式下有管理的共享記憶體設計方法模式記憶體
- [20210407]分析sql語句的共享記憶體段3.txtSQL記憶體
- JNI 基礎 - Android 共享記憶體的序列化過程Android記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- Linux 程式間通訊之System V 共享記憶體Linux記憶體
- Linux系統程式設計—共享記憶體之mmapLinux程式設計記憶體
- 記憶體管理篇——實體記憶體的管理記憶體