暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

共享内存的学习

济南小老虎 2025-04-13
85

共享内存是什么

在 Linux 系统中,/dev/shm 是一个特殊的文件系统,
用于实现进程间通信(IPC)的共享内存机制。
它是一个基于内存的文件系统,通常用于存储临时数据,
以便多个进程可以快速访问和共享这些数据。

基于内存:
/dev/shm 是一个临时文件系统(tmpfs),
其内容存储在系统的物理内存或交换空间中。
这意味着它具有非常高的读写速度,但数据在系统重启后会丢失。

临时性:
存储在 dev/shm 中的数据是临时的,系统重启后,
该目录中的所有内容都会被清空。

安全性:
默认情况下,只有具有相应权限的用户和进程可以访问 dev/shm 中的数据,
这提供了一定程度的安全性。

用途广泛:
常用于缓存、临时文件存储、进程间通信等场景。


IPC

进程间通信(IPC,Inter-Process Communication)
是指在不同进程之间传递或共享数据的方法。
Linux 提供了多种 IPC 机制,每种机制都有其特点和适用场景。

1. 管道(Pipe)
管道是一种简单的 IPC 机制,用于单向数据流。
它分为匿名管道和命名管道两种类型。

2. 消息队列(Message Queue)
消息队列允许进程将消息发送到队列中,
其他进程可以从队列中读取消息。
消息队列分为 System V 消息队列和 POSIX 消息队列。

3. 共享内存(Shared Memory)
共享内存允许多个进程访问同一块内存区域,从而实现数据共享。
共享内存分为 System V 共享内存和 POSIX 共享内存。

4. 信号(Signal)
信号是一种软件中断机制,用于通知进程某些事件的发生。
信号可以在进程之间传递简单的消息。

5. 套接字(Socket)
套接字是一种更通用的 IPC 机制,支持进程间通信,
不仅限于同一台机器上的进程,还可以用于网络通信。
套接字分为流式套接字(TCP)和数据报套接字(UDP)。


linux内核共享内存参数

kernel.shmmax

含义:定义单个共享内存段的最大大小(以字节为单位)。
默认值:通常为 32MB(33554432 字节),但具体值可能因系统而异。
1. sysctl -w kernel.shmmax=134217728  # 设置为128MB
2. 编辑 etc/sysctl.conf 文件,添加或修改以下内容:
   kernel.shmmax = 134217728  
   执行 sysctl -p

kernel.shmall

含义:定义系统中所有共享内存段的总大小(以页面为单位)。
例如,在 x86 架构中,每个页面通常是 4KB。
默认值:通常为 2097152 页(约 8GB)
1.  sysctl -w kernel.shmall=2097152  # 设置为2GB
2. 编辑 etc/sysctl.conf 文件,添加或修改以下内容
   kernel.shmall = 2097152

kernel.shmmni

含义:定义系统中允许的最大共享内存段数量。
默认值:4096。
1. sysctl -w kernel.shmmni=4096
2. 编辑 etc/sysctl.conf 文件,添加或修改以下内容
   kernel.shmmni = 4096


共享段的理解

我这边一个 Oracle的数据库:
文件系统   类型   容量    已用  可用 已用% 挂载点
tmpfs    tmpfs   504G   39G  466G    8% dev/shm

发现共享段使用了 40G左右. 

内容信息: 
128M    ./ora_ORA19C_1258852064_1_92
128M    ./ora_ORA19C_1258852064_1_93
128M    ./ora_ORA19C_1258852064_1_94
128M    ./ora_ORA19C_1258852064_1_95
128M    ./ora_ORA19C_1258852064_1_96
128M    ./ora_ORA19C_1258852064_1_97
128M    ./ora_ORA19C_1258852064_1_98
128M    ./ora_ORA19C_1258852064_1_99
221M    ./ora_ORA19C_1258852064_2_0

但是我还是有一些奇怪, 为啥我另外一个环境没有.
linxu的内存管理还是比较复杂的..


文章转载自济南小老虎,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论