精华内容
下载资源
问答
  • 共享内存是IPC机制中的一种,顾名思义,它允许两个不相关的进程访问同一段内存,这也是一种传递数据的有效方式。 通过man命令可以查看各个函数的详细说明: Int shmget(key_t key,size_t size,int shmflg); 功能...

    共享内存是IPC机制中的一种,顾名思义,它允许两个不相关的进程访问同一段内存,这也是一种传递数据的有效方式。

    通过man命令可以查看各个函数的详细说明:

    Int shmget(key_t key,size_t size,int shmflg);

    功能:创建或获取共享内存,并返回其对应的描述符id

    返回值:成功,返回创建或获取对应共享内存的描述符,失败返回-1

    参数说明:key:共享内存的键值,size:共享内存的大小,shmflg:打开标志,如果一开始没有现成的共享内存,并设置了IPC_CREATE标志,则会新创建一块共享内存

    void* shmat(int shmid,const void* shmaddr,int shmflg);

    功能:把shmid指定的共享内存映射到进程的地址空间里(各个进程的地址不一样)

    返回:成功返回映射到进程空间之后的内存地址

    参数:shmid:要映射的共享内存的描述符,shmaddr:指定映射到内存之后的地址(可以自己指定一个空闲地址),一般会产生冲突,默认的情况下,这个参数都填为NULLL,让linux系统自动的选择映射的地址

    shmflg:打开标志

     

    Int shmdt(const void* shmaddr);

    功能;把进程空间的地址与共享内存断开,但是共享内存这片空间还不能被使用

    成功返回0,失败返回-1,

    shmaddr:要断开共享内存的地址

     

    Int shmctl(int shmid,int cmd,struct shmid_ds* buf);

    功能:控制共享内存,把共享内存释放掉,归回给操作系统,其它进程可以,

    接着用

    成功;根据不同的操作返回不同的值,失败返回-1,

    参数:要控制的共享内存的id,

    cmd;决定要执行什么样的操作,比如IPC_RMID表示删除共享内存,

    buf:获取liunx中描述共享内存的shmid_ds结构,基本不使用,

    共享内存通信举例:

    //write.c
    //命令:gcc -g write.c -o write
    //./write
    #include<sys/types.h>
    #include<sys/shm.h>
    #include<sys/ipc.h>
    #include<stdio.h>
    #include<unistd.h>
    #include<stdlib.h>
    #define TEXT_SZ 2048
    struct shared_use_st
    {
        int write_by_you;       //这个标志判断是否数据被读取
        char some_text[TEXT_SZ];    

    };
    int main()
    {
        int shmid;
        int running = -1;
        struct shared_use_st *shared_stuff;
        char buffer[TEXT_SZ];
        shmid =  shmget((key_t)1234,sizeof(struct shared_use_st),IPC_CREAT);
        if(shmid  == -1)
        {
            printf("creat share memory failed!\n");
            exit(EXIT_FAILURE);
        }
        shared_stuff = (struct shared_use_st*)shmat(shmid,NULL,0);
        
        while(running)
        {
            while(shared_stuff->write_by_you == 1)  
            {
                sleep(1);
                printf("wait read process");
            }
            fgets(buffer,TEXT_SZ,stdin);     
            strncpy(shared_stuff->some_text,buffer,TEXT_SZ);
            shared_stuff->write_by_you = 1;
            if(strncmp(buffer,"quit",4) == 0)
            {
                running = 0;
            }
        
        }
        
        shmdt((const void*)shared_stuff);
        return 1;

    }

    //read 先运行
    //命令:gcc -g read.c -o read
    #include<sys/types.h>
    #include<sys/shm.h>
    #include<sys/ipc.h>
    #include<stdio.h>
    #include<unistd.h>
    #include<stdlib.h>
    #define TEXT_SZ 2048
    struct shared_use_st
    {
        int write_by_you;
        char some_text[TEXT_SZ];    

    };

    int main()
    {
        int shmid;
        int running = 1;
        struct shared_use_st *shared_stuff;
        shmid =  shmget((key_t)1234,sizeof(struct shared_use_st),IPC_CREAT);
        shared_stuff = (struct shared_use_st*)shmat(shmid,NULL,0);
        shared_stuff->write_by_you = 0
        while(running)    
        {
            if(shared_stuff->write_by_you = 1)
            {
                printf("write process write %s\n",shared_stuff->some_text);
                shared_stuff->write_by_you = 0;    
                if(strncmp(shared_stuff->some_text,"quit",4) == 0)
                {
                    running = 0;
                }
                
            }
        }
        
        shmdt((const void*)shared_stuff);
        
        shmctl(shmid,IPC_RMID,0);
        return 1;
    }

     

     

     

     

     

     

    展开全文
  • Linux服务器内存使用情况解释

    千次阅读 2018-07-17 18:21:28
    转自:http://hi.baidu.com/chinalwb/item/a88e47c8da2e4f14b77a24d6   查看内存使用情况,可以使用命令 free -m   其结果大致如下:  total used free shared buffers cached Mem: ...

    转自:http://hi.baidu.com/chinalwb/item/a88e47c8da2e4f14b77a24d6

     

    查看内存使用情况,可以使用命令 free -m

     

    其结果大致如下:

                       total       used         free     shared    buffers     cached

    Mem:         32108      30681       1426          0        123      21165

    -/+ buffers/cache:       9392      22715

    Swap:        34287       1262      33025

     

     

    在第一部分Mem 行中有如下参数:

    * total: 内存总数,即32108 MB

    * used: 已经使用的内存数,即 30681 MB

    * free: 空闲的内存数:即 1426MB

    * shared:当前已废弃不用,总是 0

    * buffers Buffer: 缓存内存数,即 123 MB

    * cached Page: 缓存内存数,即 421MB

     

    其中,内存总数与已经使用内存数和空闲内存数的关系是:

     total (32108) = used (30681) + free (1426)

     

    在第二部分内容(-/+ buffers/cache)中个参数如下所示:

    (-buffers/cache): 真正使用的内存数,即9392M,他指的是第一部分的 used - buffers - cached

    (+buffers/cache): 可用的内存数,即22715M,他指的是第一部分的 free + buffers + cached

     

    其含义可以理解为:-buffers/cached 反映的是被程序实实在在用掉的内存,而 +buffers/cached反映的是可以被使用(或者说挪用)的内存总数。

     

    第三部分指交换分区。(书上说“大家都明白,这里就不再讲了”,可是我还不清楚,一会儿再查吧)

     

     

    对操作系统来讲,used 和 free都是Mem的参数,所以 buffers/cached这两项对于操作系统来讲都是已经被使用的内存,所以呢 free的就比较少;

    而对于应用程序来说呢,buffers/cached等同于可用的内存,因为buffers/cached可提高程序执行的性能,当程序使用内存时,buffers/cached很快就会被使用。

    所以从应用程序的角度来看,应以(-/+ buffers/cached)的free 和 used为主,即我们主要与他相关的free和used就可以了。

     

    我们在观察Linux的内存使用情况时,只要没发现用swap的交换空间,就不必担心自己的内存太少。

    如果常常看到swap用了很多,那么你就要考虑加物理内存了。这也是在Linux服务器上看内存是否够用的标准。

    展开全文
  • linux查看服务器内存

    千次阅读 2021-03-04 17:45:58
    free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。 直接输入free命令,显示如下 free命令默认是显示单位kb,可以采用free -m和free -g命令查看,分别表示MB和GB 另外,free...

    1. free命令

    free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

    直接输入free命令,显示如下

    free命令默认是显示单位kb,可以采用free -m和free -g命令查看,分别表示MB和GB

    另外,free -h会自动选择以适合理解的容量单位显示

    Mem:表示物理内存统计,如果机器剩余内存非常小,一般小于总内存的20%,则判断为系统物理内存不够
    Swap: 表示硬盘上交换分区的使用情况,如剩余空间较小,需要留意当前系统内存使用情况及负载,当Swap的used值大于0时,则表示操作系统物理内存不够,已经开始使用硬盘内存了。
    第1行数据11G表示物理内存总量;6.5G表示总计分配给缓存(包含buffers与cache)使用的数量,但其中可能部分缓存并未实际使用;
    1.3G表示未被分配的内存;shared表示共享内存;4.0G表示系统分配但未被使用的buffers数量;4.7G表示系统分配但未被使用的available数量

    ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less
    执行以上命令可查看各个程序进程内存使用的内存情况,如下图所示,第一列为进程占用的内存百分比,可以看到哪些应用程序占的内存比较多,用于排查问题:

    img

    2.top命令

    top 命令查看系统的实时负载, 包括进程、CPU负载、内存使用等等;

    直接输入top命令

    复制代码

    下面表示整体信息

    img

    列表的含义

    复制代码

    进入top的实时界面后,默认按照CPU的使用率排序,通过“shift+m”按键将进程按照内存使用情况排序,可以查看哪些进程是当前系统中的内存开销“大户”。

    top命令中,按下 f 键,进入选择排序列的界面,这里可以选择要显示的信息列,要按照哪些信息列进行排序等

    参照红框的说明来选择是否显示那些列就行,标*的就是显示

    部分参考:https://www.cnblogs.com/Security-Darren/p/4685629.html

    以上就是良许教程网为各位朋友分享的Linux相关知识。

    展开全文
  • linux查看服务器内存占用情况

    千次阅读 2020-11-03 16:22:49
    查看某个进程的占用内存情况(以‘device_maintenance’为例) 1.查找进程号 ps -ef | grep 'device_maintenance' 或 ps -aux | grep '...shared: 多个进程共享的内存 buffers: 用于块设备数据缓冲,记录文件系统metad

    查看某个进程的占用内存情况(以‘device_maintenance’为例)

    1.查找进程号

    ps -ef | grep 'device_maintenance'ps -aux | grep 'device_maintenance'
    

    在这里插入图片描述
    在这里插入图片描述

    2.查看服务器整体内存占用情况1

    在这里插入图片描述

    3.查看服务器整体内存占用情况2

    free -h
    

    在这里插入图片描述

    total: 内存总数
    used: 已经使用内存数
    free: 完全空闲内存
    shared: 多个进程共享的内存
    buffers: 用于块设备数据缓冲,记录文件系统metadata(目录,权限,属性等)
    cached: 用于文件内容的缓冲
    available:真正剩余的可被程序应用的内存数
    
    展开全文
  • 如何查看linux服务器内存使用情况

    千次阅读 2020-07-11 10:50:45
    free命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。 直接输入free命令,显示如下 free命令默认是显示单位kb,可以采用free -m和free -g命令查看,分别表示MB和GB 另外,...
  • Free命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存 如果加上 -h 选项,输出的结果会友好很多: 有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数...
  • 操作系统共享内存项目
  • Linux服务器内存分析及问题排查

    千次阅读 2018-08-12 09:57:45
    平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt等。每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常。大部分情况下,在问题发生之前,某些...
  • 手动释放Linux服务器内存

    千次阅读 2017-02-28 15:25:56
    手动释放Linux服务器内存  在服务器运行过程中,使用free -m查看服务器内存时,经常会发现free值很小,有些同学就会很紧张,总想采取一些措施,使得free值看起来高一点,心里就比较爽一点。其实,个人觉得这完全...
  • linux服务器的物理内存和虚拟内存

    千次阅读 2018-01-06 11:11:04
    [appdeploy@CNSZ22PL0217:/home/appdeploy]$free -m total used free shared buffers cachedMem: 258302 110198 148103 0 ...
  • 戴尔服务器扩容内存

    千次阅读 2017-03-07 10:19:26
    戴尔服务器扩容内存内存规格 厂家的话,三星,镁光都可以使用(目前测试使用可以识别) ...服务器内存插槽照片: 扩容开始:内存展示照片: 扩容前服务器内存[root@localhost ~]# free -h total used free shared
  • 服务器】关于内存使用率的问题

    千次阅读 2017-09-11 18:22:57
    内存使用率指的是此进程所开销的内存。占内存大的程序不一定会占用很多的CPU资源,而占CPU大的程序也不一定开销太大的内存。某一程序的CPU占用率过高会影响其他程序的运行。而某一程序占用内存过大,会影响机器的...
  • 一个服务器,最重要的资源之一就是内存,内存够不够用,是直接...本文介绍如何查看Linux服务器内存使用情况, 1、free命令 free -m [root@localhost ~]# free -m  total used free shared buffers cac
  • 最近买了一个centos 的云主机,因为贫穷限制了我购买的内存大小,只有500M,所以导致物理内存经常处于饱和状态,无奈虚拟内存设置的只有132M,理论上讲虚拟内存应该要有物理内存的2倍也就是1G大小才够用!...
  • 查看服务器CPU内存

    千次阅读 2018-11-15 11:14:58
    查看linux系统的内存有很多方法,以下为总结版本:   1- 内存:cat /proc/meminfo; cpu:cat /proc/cpuinfo; 2- 查看内存使用情况!!!! 使用命令:free -m 3- 查看CPU使用情况 使用命令:top 基本...
  • 搭建测试环境过程中,需要对正在使用的aws服务器,查看它在运行脚本,启动脚本时的内存,CPU,网络等使用情况 1、查看物理CPU个数:cat cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l 2、查看...
  • Linux 服务器内存处理相关

    千次阅读 2019-12-24 20:09:00
    文章目录Linux 服务器内存处理相关1、free 命令2、查看进程的内存占用情况3、查看内存占用最高的前204、动态查看内存的使用情况 Linux 服务器内存处理相关 1、free 命令 以kb形式查看内存使用情况 free total ...
  • 在服务器运行过程中,使用free -m查看服务器内存时,经常会发现free值很小,有些同学就会很紧张,总想采取一些措施,使得free值看起来高一点,心里就比较爽一点。其实,个人觉得这完全是图一时之快,没什么实质性...
  • 公司报表分析系统已经运行了一年多,最近收到服务器内存警告信息内存耗尽,第一时间着手排查问题,记录下排查内存耗尽问题整个过程使用到的命令。 第一步查看内存使用情况: free -m 命令:已M单位显示服务器...
  • 平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt等。每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常。大部分情况下,在问题发生之前,某些...
  • 命令查看Linux服务器内存、CPU、显卡使用情况

    万次阅读 多人点赞 2017-11-28 09:35:53
    命令查看Linux服务器状态
  • 性能测试实时过程中,我们要实时去看服务器各项指标,以观察问题出在哪里,那么怎么查看性能指标呢?今天就来学习一下linux的常用命令吧~ what&amp;amp;amp;amp;amp;How man命令 // 查看所有命令的使用方法 ...
  • PostgreSQL 性能优化之服务器参数配置

    千次阅读 2020-05-19 22:04:38
    介绍如何通过 PostgreSQL 服务器的参数优化数据库的性能,包括查看参数设置的 SHOW 命令、pg_settings 视图、以及设置参数的各种方式。同时介绍了 max_connections、shared_buffers、wal_buffers、effective_cache_...
  • 查询日志 显示 内存满了 把mysql服务给杀了 linux 服务器如果 内存满了 会自动清理进程 防止服务器挂掉 选择的话 谁占的的内存大 就先杀谁 我的服务器里面 mysql服务占的内存是最大的 所以就把mysql就给杀了 ...
  • Centos7手动释放服务器内存: [root@mail ~]# sync [root@mail ~]# cat /proc/sys/vm/drop_caches 0 [root@mail ~]# echo 3 > /proc/sys/vm/drop_caches total 内存总数 used 已经使用的内存 free 空闲的内存 ...
  • 查看内存使用情况 使用命令:free -m 大致结果类似下图: ...* shared:当前废弃不用 * buffers:缓存内存数(Buffer) * cached:缓存内舒数(Page) (-/+ buffers/cache)行: * (-buffers...
  • 最近买了一个CentOS的云主机,因为贫穷限制了我购买的内存大小,只有500M,所以导致物理内存经常处于饱和状态,无奈虚拟内存设置的只有132M,理论上讲虚拟内存应该要有物理内存的2倍也就是1G大小才够用! 又由于我...
  • 一台服务器运行着3个tomcat,服务器内存为128G,有一天发现内存使用95%了, 网上搜索了下,说是通过设置环境变量来改变arena的数量,例如export MALLOC_ARENA_MAX=1 内容写的比较复杂,可能是glibc为了分配内存的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,792
精华内容 25,916
关键字:

服务器内存shared