
Sdílená paměť je paměť, ke které může přistupovat více procesů; tj. oblast paměti, kterou lze sdílet mezi různými procesy a lepší způsob předávání dat mezi dvěma procesy. Sdílená paměť je nejrychlejší formou meziprocesové komunikace, která je v současné době k dispozici.
Předpokládejme, že program vytvoří paměťovou část, ke které může přistupovat jiný proces (pokud je to povoleno). Sdílený segment lze stejným procesem připojit vícekrát. Kdykoli je paměť mapována do adresového prostoru procesu, tj. sdílí společnou paměťovou oblast, jádro se nezapojí do předávání dat mezi procesy. Mnoho aplikací, jako je Oracle SGA, vyžaduje nastavení sdílené paměti, využívá tuto funkci.
Podívejme se na některé příkazy IPCS prostřednictvím několika příkladů.
Vytiskněte aktivní segmenty sdílené paměti pomocí -m
možnost.
kde,
stav "dest" znamená, že paměťový segment je označen jako zničený
pole "nattach" ukazuje, kolik aplikačních PID je stále připojeno ke sdílené paměti
# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 65536 root 600 393216 2 dest
0x00000000 98305 root 600 393216 2 dest
Následující příkaz vytiskne informace o aktivních segmentech sdílené paměti:
# ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
Tisk informací o aktivních frontách sdílené paměti:
# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
Tisk informací o semaforech, které jsou přístupné semafory. Ipcs -l ukazuje limit sdílené paměti, semaforů a zpráv.
# ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4194303
max total shared memory (kbytes) = 1073741824
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
------ Messages: Limits --------
max queues system wide = 16
max size of message (bytes) = 65536
default max size of queue (bytes) = 65536
Níže uvedený příkaz ukazuje maximální velikost jednoho segmentu paměti, který může proces Linuxu alokovat ve svém virtuálním adresním prostoru. Maximální velikost jednoho segmentu paměti můžete omezit provedením následujícího příkazu.
# cat /proc/sys/kernel/shmmax
4294967295
Hodnotu shmmax můžete nastavit ozvěnou do příslušného souboru /proc, jak je uvedeno níže. Následující příkaz nastaví maximální velikost (ve smyslu bajtů) jeden segment paměti je nastaven na 8388698:
# echo 8388608 > /proc/sys/kernel/shmmax
Podobným způsobem můžete nastavit maximální povolenou velikost jakékoli jednotlivé zprávy ve frontě zpráv IPC System V v bajtech.
# echo 8192 > /proc/sys/kernel/msgmax
Pomocí následujícího příkazu můžete zkontrolovat aktuální parametr jádra na semafor.
# cat /proc/sys/kernel/sem
250 32000 32 128
where
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
Závěr
V tomto tutoriálu jsme se naučili příkaz Linux ipcs pro kontrolu informací o sdílené paměti. Doufám, že se vám čtení líbilo a zanechte prosím své návrhy v sekci komentářů níže.