精华内容
下载资源
问答
  • 2019-01-12 00:23:10

    2018-07-18修改

    • wal_buffers默认值为-1,此时wal_buffers使用的是shared_buffers,wal_buffers大小为shared_buffers的1/32
    • autovacuum_work_mem默认值为-1,此时使用maintenance_work_mem的值

    1 不使用wal_buffers、autovacuum_work_mem

    计算公式为:

    max_connections*work_mem + max_connections*temp_buffers +shared_buffers+(autovacuum_max_workers * maintenance_work_mem)
    

    假设PostgreSQL的配置如下:

    max_connections = 100
    temp_buffers=32MB
    work_mem=32MB
    shared_buffers=19GB
    autovacuum_max_workers = 3
    maintenance_work_mem=1GB #默认值64MB
    
    select(
    	(100*(32*1024*1024)::bigint)
    	+ (100*(32*1024*1024)::bigint)
    	+ (19*(1024*1024*1024)::bigint)
    	+ (3 * (1024*1024*1024)::bigint )
    )::float8 / 1024 / 1024 / 1024
    --output
    28.25
    

    此时pg满载峰值时最多使用28.25GB内存,物理内容为32GB时,还有3.75GB内存给操作系统使用.

    2 使用wal_buffers,不使用autovacuum_work_mem

    计算公式为:

    max_connections*work_mem + max_connections*temp_buffers +shared_buffers+wal_buffers+(autovacuum_max_workers * autovacuum_work_mem)
    

    假设PostgreSQL的配置如下:

    max_connections = 100
    temp_buffers=32MB
    work_mem=32MB
    shared_buffers=19GB	
    wal_buffers=16MB #--with-wal-segsize的默认值
    autovacuum_max_workers = 3	
    maintenance_work_mem=1GB
    
    select(
    	(100*(32*1024*1024)::bigint)
    	+ (100*(32*1024*1024)::bigint)
    	+ (19*(1024*1024*1024)::bigint)
    	+ (16*1024*1024)::bigint
    	+ (3 * (1024*1024*1024)::bigint )
    )::float8  / 1024 / 1024 / 1024
    --output
    28.26
    

    此时pg满载峰值时最多使用28.5GB内存,物理内容为32GB,还有3.5GB内存给操作系统使用.

    3 同时使用wal_buffers、autovacuum_work_mem[建议使用]

    计算公式为:

    max_connections*work_mem + max_connections*temp_buffers +shared_buffers+wal_buffers+(autovacuum_max_workers * autovacuum_work_mem)+ maintenance_work_mem
    

    假设PostgreSQL的配置如下:

    max_connections = 100
    temp_buffers=32MB
    work_mem=32MB
    shared_buffers=19GB	
    wal_buffers=262143kb
    autovacuum_max_workers = 3
    autovacuum_work_mem=256MB
    maintenance_work_mem=2GB
    
    select(
        (100*(32*1024*1024)::bigint)
        + (100*(32*1024*1024)::bigint)
        + (19*(1024*1024*1024)::bigint)
        + (262143*1024)::bigint
        + (3 * (256*1024*1024)::bigint )
        + ( 2 * (1024*1024*1024)::bigint )
    )::float8  / 1024 / 1024 / 1024
    --output
    28.01
    

    此时pg载峰值时最多使用28.25GB内存,物理内容为32GB时,还有3.75GB内存给操作系统使用.建议所有内存消耗根据硬件配置,也就是使用这个配置.

    更多相关内容
  • Linux内存计算方法

    千次阅读 2018-12-08 18:48:58
    一、Linux进程占用内存计算方法 进入top,按f选择swap, code, data; 按M根据内存排序。 总结: VIRT 虚拟内存中含有共享库、共享内存、栈、堆,所有已申请的总内存空间。 RES 是进程正在使用的内存空间(栈、堆),...

    一、Linux进程占用内存计算方法

    进入top,按f选择swap, code, data; 按M根据内存排序。

    总结:
    VIRT 虚拟内存中含有共享库、共享内存、栈、堆,所有已申请的总内存空间。
    RES  是进程正在使用的内存空间(栈、堆),申请内存后该内存段已被重新赋值。
    SHR  是共享内存正在使用的空间。
    SWAP 交换的是已经申请,但没有使用的空间,包括(栈、堆、共享内存)。
    DATA 是进程栈、堆申请的总空间。
     

    VIRT=RES+SWAP
    VIRT=CODE+DATA+SHR+SWAP中共享库/内存
    SHR:内存中共享库/内存实际占用
    进程代码和堆栈实际占用内存=RES-SHR
    RES和SWAP中都包含共享库/内存
    CODE+DATA不包含共享库/内存占用。

    参考:https://blog.csdn.net/u011547375/article/details/9851455

     

     

    二、Linux如何查看空间内存有多少

    free和top显示的内存容易让人混淆。下面分析一下实际占用内存和空闲内存。
    free默认显示的单位是KB。
    实际使用内存和空闲内存看第二行。
    实际占用内存=used - buffers - cached
    空闲内存=free + buffers + cached
    操作系统来讲是Mem的参数.buffers/cached 都是属于被使用.
    对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。
    除了对dentry进行缓存(用于VFS,加速文件路 径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache能有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

    参考:https://zhidao.baidu.com/question/84777164.html

     

    展开全文
  • DDR4的内存计算方法

    千次阅读 2019-05-23 14:22:35
    DDR4的内存计算方法 刚转到存储这边,对于内存的计算很模糊,整理了一下网上的各种解释,有了自己的理解。记录下来,希望有帮助 ----------------------以下是网络上之前给出的解释------------------ DDR3内存计算 ...

    DDR4的内存计算方法

    刚转到存储这边,对于内存的计算很模糊,整理了一下网上的各种解释,有了自己的理解。记录下来,希望有帮助
    ----------------------以下是网络上之前给出的解释------------------
    DDR3内存计算
    bank地址线位宽为3,及bank数目为 2^3=8;
    行地址线位宽位13,及A0…A12;
    列地址线位宽为10,及A0…A9;
    有 2^3 * 2^13 * 2^10 = 2^26 =2^6Mb = 64Mb
    再加上数据线,则容量为 64Mb x 16 = 128M Byte = =1G bit
    ---------------下面是自己的理解--------------------
    下面这个DDR4的容量的计算方法如下(料号为:MT40A1G8WE-083E:B)
    下面是下载的相关数据手册的截图
    在这里插入图片描述
    如1Gb8这个,8是数据位宽
    2^2 X2^2
    X 2^16 X2^10X8 = 2^30X8 =2^10MbX8 = 1GbX8=8Gb=1GB
    这样理解的:
    有4个群,每个群有4个块,每个块有 2^16 X 2^10数量的空间,每个空间存8位数据,那么总的位宽就是1GB

    如果是n个DDR4挂在CPU上,那么地址空间是不变的,只是读和存的数据位宽变成了nX8,那整个容量即nX1GB

    展开全文
  • 图片占用内存计算方法

    万次阅读 2015-03-26 21:54:25
    ALPHA_8:每个像素占用1byte内存 ARGB_4444:每个像素占用2byte内存 ARGB_8888:每个像素占用4byte内存 RGB_565:每个像素占用2byte内存 Android默认的颜色模式为ARGB_8888,这个颜色模式色彩最细腻,显示...

    Android中有四种,分别是:

    ALPHA_8:每个像素占用1byte内存

    ARGB_4444:每个像素占用2byte内存

    ARGB_8888:每个像素占用4byte内存

    RGB_565:每个像素占用2byte内存

    Android默认的颜色模式为ARGB_8888,这个颜色模式色彩最细腻,显示质量最高。但同样的,占用的内存也最大。


    举例说明一个32位的PNG也就是ARGB_8888,像素是1204*1024,那么占用空间是:

    1024*1024*(32/8)

    因为8bit = 1 byte, 32位就是4byte. 我们在解析图片的时候为了方式oom最好使用ARGB_4444模式. 节省一半的内存空间.


    ===================================================================


     Android中一张图片(BitMap)占用的内存主要和以下几个因数有关:图片长度,图片宽度,单位像素占用的字节数。
    一张图片(BitMap)占用的 内存 = 图片长度*图片宽度*单位 像素占用的字节数
    图片长度和 图片宽度的单位是像素。
    图片(BitMap)占用的内存应该和屏幕密度(Density)无关,虽然我暂时还拿不出直接证据。
        创建一个BitMap时,其单位像素占用的字节数由其参数 BitmapFactory.Options inPreferredConfig 变量决定。
    inPreferredConfig为 Bitmap.Config 类型,
    Bitmap.Config 是个枚举类型,它可以为以下值
    Enum Values
    Bitmap.Config  ALPHA_8  Each pixel is stored as a single translucency (alpha) channel. 
    This is very useful to efficiently store masks for instance. No color information is stored. With this configuration, each pixel requires 1 byte of memory.
    此时图片只有alpha值,没有RGB值,一个像素占用一个字节
    Bitmap.Config  ARGB_4444  This field is deprecated. Because of the poor quality of this configuration, it is advised to use ARGB_8888instead.  
    这种格式的图片,看起来质量太差,已经不推荐使用。
    Each pixel is stored on 2 bytes. The three RGB color channels and the alpha channel (translucency) are stored with a 4 bits precision (16 possible values.) This configuration is mostly useful if the application needs to store translucency information but also needs to save memory. It is recommended to use ARGB_8888 instead of this configuration.
    一个像素占用2个字节,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各占4个bites,共16bites,即2个字节
    Bitmap.Config  ARGB_8888  Each pixel is stored on 4 bytes. Each channel (RGB and alpha for translucency) is stored with 8 bits of precision (256 possible values.) This configuration is very flexible and offers the best quality. It should be used whenever possible
    一个像素占用4个字节,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各占8个bites,共32bites,即4个字节
    这是一种高质量的图片格式,电脑上普通采用的格式。它也是Android手机上一个BitMap的
    默认格式。
    Bitmap.Config  RGB_565  Each pixel is stored on 2 bytes and only the RGB channels are encoded: red is stored with 5 bits of precision (32 possible values), green is stored with 6 bits of precision (64 possible values) and blue is stored with 5 bits of precision. This configuration can produce slight visual artifacts depending on the configuration of the source. For instance, without dithering, the result might show a greenish tint. To get better results dithering should be applied. This configuration may be useful when using opaque bitmaps that do not require high color fidelity.
    一个像素占用2个字节,没有alpha(A)值,即不支持透明和半透明,Red(R)值占5个bites ,Green(G)值占6个bites  ,Blue(B)值占5个bites,共16bites,即2个字节.对于没有透明和半透明颜色的图片来说,该格式的图片能够达到比较的呈现效果,相对于ARGB_8888来说也能减少一半的内存开销。因此它是一个不错的选择。另外我们通过android.content.res.Resources来取得一个张图片时,它也是以该格式来构建BitMap的.
    Android4.0开始,该选项无效。即使设置为该值,系统任然会采用 ARGB_8888来构造图片
    :A RGB指的是一种色彩模式,里面A代表Alpha, R 表示 red G 表示 green B 表示 blue ,其实所有的可见色都是红绿蓝组成的,所以红绿蓝又称为三原色。
    A  R  G  B
    透明度  红色   绿色   蓝色
    简单点说

     图片格式(Bitmap.Config

     占用内存的计算方向

     一张100*100的图片占用内存的大小

     ALPHA_8

     图片长度*图片宽度

     100*100=10000字节

     ARGB_4444

     图片长度*图片宽度*2

     100*100*2=20000字节

     ARGB_8888

     图片长度*图片宽度*4

     100*100*4=40000字节

     RGB_565 

     图片长度*图片宽度*2

     100*100*2=20000字节


    另外,需要注意 这里的图片占用内存是指在Navtive中占用的内存,当然BitMap使用的绝大多数内存就是该内存。
    因为我们可以简单的认为它就是BitMap所占用的内存。
      Bitmap对象在不使用时,我们应该先调用 recycle(),然后才它设置为null.
    虽然Bitmap在被回收时可以通过BitmapFinalizer来回收内存。但是调用recycle()是一个良好的习惯
    在Android4.0之前,Bitmap的内存是分配在Native堆中,调用recycle()可以立即释放Native内存。
    从Android4.0开始,Bitmap的内存就是分配在dalvik堆中,即JAVA堆中的,调用recycle()并不能立即释放Native内存。但是调用recycle()也是一个良好的习惯。
    通过dumpsys meminfo命令可以查看一个进程的内存使用情况,
    当然也可以通过它来观察我们创建或销毁一张BitMap图片内存的变化,从而推断出图片占用内存的大小。
    示例 adb shell  " dumpsys  meminfo   com.lenovo.robin "
    运行结果。
    Applications Memory Usage (kB):
    Uptime: 18696550 Realtime: 18696541
    ** MEMINFO in pid 7985 [com.lenovo.robin] **
                         native   dalvik    other    total
                size:     4828     5379      N/A    10207
           allocated:     4073     2852      N/A     6925
                free:       10     2527      N/A     2537
               (Pss):      608      317     1603     2528
      (shared dirty):     2240     1896     6056    10192
        (priv dirty):      548       36     1276     1860

     Objects
               Views:        0        ViewRoots:        0
         AppContexts:        0       Activities:        0
              Assets:        2    AssetManagers:        2
       Local Binders:        5    Proxy Binders:       11
    Death Recipients:        1
     OpenSSL Sockets:        0

     SQL

                   heap:        0         MEMORY_USED:        0
     PAGECACHE_OVERFLOW:        0         MALLOC_SIZE:        0
    展开全文
  • 图像深度和图像内存计算

    千次阅读 2021-12-23 16:24:39
    图像深度的相关常识,以及图像内存的相关计算
  • 如何计算内存大小

    千次阅读 2020-11-22 23:16:19
    对电子产品、存储介质厂家...1、因为我们通常说的内存都是使用的十进制来表示的(如256MB、512MB等),所以我们计算内存大小时只需将所对应的地址转化成十进制即可。 2、转换规则: 1MB=1024KB ,1KB=1024Byte ,1Byte
  • C语言之内存内存容量计算方法

    千次阅读 2020-10-17 15:49:54
    C语言之内存内存容量计算 一:程序是什么 我们知道,计算机(pc、mcu)的正常运行离不开程序,也就是我们平常所说的代码。将编写好的程序运行是为了得到一定的结果,从最本质上来讲计算机是用来计算的,而计算就是...
  • 64位系统使用64位地址线的最大寻址空间为2的64次方bytes,计算后其可寻址空间达到了18446744073709551616 Bytes,即16384PB(PebiByte)或16777216TB(TebiByte)。但是,很多64位CPU使用40位地址线,最大寻址空间仅为1...
  • 内存计算框架

    千次阅读 2020-12-26 20:27:07
    内存计算(In-memory Computing)指采用了各种内存计算在计算过程中让CPU从主内存读写数据,而不是从磁盘读写数据的计算模型。这里的内存技术包括列存储格式、数据分区与压缩、增量写入、无汇总表等方法。目前,内存...
  • 内存地址的计算方法

    万次阅读 多人点赞 2017-03-24 14:25:21
    内存是按字节编址的,所以单位是字节哈,1字节可是等于8位的。因为计算的范围一般比较小,所以就记住两个就够了。记住几个常用的2的10次方为1024即1KB 2的20次方=(2的10次方)的平方,即1MB就行了 如果要求更大的,...
  • 图像处理16:图像内存计算和类的内存计算 (1)图像的内存计算: ①图像内存的计算公式: 图像所占内存=图像分辨率*一个像素所占内存空间 ②位深度: 如有位深度1,则可以组成种颜色,即二值图像; 如有位...
  • 在计算机中要访问存储区,都是通过地址来进行访问的,包括所有的外设(比如串口、内存、硬盘等),都对应有一个访问地址,内存中的每一个字节对应唯一的一个地址,每一个地址代表一个字节
  • 内存计算

    千次阅读 2020-04-14 16:51:20
    主流内存条规格识别方法 如下图所示,这个一个海力士的内存条,上面的规格参数,需要一定的认识, 1.看厂家,就在上图所示的地方,看厂家,图中的内存条是海力士的; 2.看容量,图中所示的容量就是8GB 3. 2Rx4 CPU...
  • 图片内存计算大小

    万次阅读 2017-12-02 21:40:23
    一张1280*740 RGBA4448的图片占内存大小 (M)? 2048*1024*(4+4+4+8)/(8*1024*1024) 解析:第一步:内存中图片大小必须为2^n  第二步:RGBA8888是4位8bit 像素点:4*8 位数*颜色深度 第三步:内存大小 ...
  • 最近在调研iOS中的OOM(Out-Of-Memory),iOS中存在一些机制,当系统的内存不够用时或者当前APP的使用内存超过了阈值,就会导致系统强杀当前APP,由于强杀当前APP的进程是系统做的事情,所以,当前APP是无法知道是什么...
  • DDR传输带宽 – DDR 266:2.1 GB/s DDR 333:2.6 GB/s DDR 400:3.2 GB/s DDR2传输带宽 – DDR2 533:4.2 GB/s DDR2 667... 本文链接:https://gaopc.cn/3406.html 本文标题:内存条带宽的换算方法以及DDR4内存理论带宽
  • Linux的top命令与内存计算

    千次阅读 2019-11-01 10:50:49
    top命令是我们平时工作中用...敲完top命令之后,按shift+p会以cpu使用百分比大小排序,shift+m会以内存使用大小排序。 先看资源总的情况: 1,任务队列信息,即第一行:第一个是系统当前时间 图中值:10:45:10 ...
  • 结构体在C语言中虽然经常使用,但是怎么计算一个结构体占用多大的内存,很多C语言的新手都没注意过,其实C语言的语法简单,难就难在它更偏向于与底层,与内存打交道。对于嵌入式方面来说,对C语言的要求更高,因为...
  • 内存容量、起始地址或结束地址的计算方法
  • PHP计算程序运行所占内存方法

    千次阅读 2017-11-04 16:07:08
    php 获取程序运行之后所占内存大小 代码如下 $star_memory = memory_get...echo '开始内存:' . ($star_memory / 1024 / 1024); $tmp = str_repeat('hello', 1000); $array = []; for ($i = 0; $i ; $i++) { $array[]
  • STM32内存大小与地址的对应关系以及计算方法

    万次阅读 多人点赞 2017-10-11 15:04:01
    最被大家熟知的是计算机内存,计算机内存有4G、8G,16G等等,对于程序员而言,要在代码中操作这些内存,肯定得知道内存的地址,此外,还需要会计算地址与内存大小的计算方法与对应关系。STM32作为微
  • 方法一:结构体的内存大小=最后一个成员的偏移量 + 最后一个成员的大小 + 末尾的填充字节数偏移量:某个成员的实际地址和这个结构体首地址之间的距离。例.1:struct data { char a; int b; double c; } 比如
  • 内存换算公式(内存怎么换算)

    千次阅读 2021-07-25 04:42:31
    我的电脑内存只有128MB,就是说只能装128MB。一般内存换算是1024进制,也就是2的10次方。1TB=1024GB 1GB=1024MB 1MB=1024KB 1KB=1024Byte 你说的128MB是运行内存,临时运行少量数据,外在形式是内.1G=多少MB,1MB=...
  • 3、点击或单击“高级”选项卡,然后在“虚拟内存”下,点击或单击“更改”。 4、清除“自动管理所有驱动器的分页文件大小”复选框。 在“驱动器[卷标]”下,点击或单击要更改的分页文件所在的驱动器。 点击或...
  • 其实我们可以通过“校准显示器”的方法来解决,下面小编教大家照片查看器无法显示此图片,因为计算机上的可用内存可能不足的解决方法。解决步骤如下:1、点击屏幕右下角“开始”图标,打开“控...
  • 计算机内存和磁盘的关系

    千次阅读 多人点赞 2020-09-04 20:42:56
    计算机内存和磁盘的关系 前言 上篇文章详细讲了计算机内存的物理结构,逻辑结构以及在内存的基础上理解几种常见的数据结构。但是,计算机系统出了内存之外,还有一个非常重要的硬件,那就是磁盘。他们都是用于计算机...
  • 1 获取内存使用量  获取内存使用量主要使用Psapi.h中声明的GetProcessMemoryInfo函数:  ①、在程序中添加#pragma comment(lib,”Psapi.lib”),将Psapi.lib包含进去,或者通过在工程的属性中添加Psapi.lib; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,115,818
精华内容 446,327
关键字:

内存计算方法