-
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:35DDR4的内存计算方法 刚转到存储这边,对于内存的计算很模糊,整理了一下网上的各种解释,有了自己的理解。记录下来,希望有帮助 ----------------------以下是网络上之前给出的解释------------------ 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^2X 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:25ALPHA_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)无关,虽然我暂时还拿不出直接证据。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_8888
instead.
这种格式的图片,看起来质量太差,已经不推荐使用。
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 totalsize: 4828 5379 N/A 10207allocated: 4073 2852 N/A 6925free: 10 2527 N/A 2537(Pss): 608 317 1603 2528(shared dirty): 2240 1896 6056 10192(priv dirty): 548 36 1276 1860
ObjectsViews: 0 ViewRoots: 0AppContexts: 0 Activities: 0Assets: 2 AssetManagers: 2Local Binders: 5 Proxy Binders: 11Death Recipients: 1OpenSSL Sockets: 0
SQL
heap: 0 MEMORY_USED: 0PAGECACHE_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:54C语言之内存、内存容量计算 一:程序是什么 我们知道,计算机(pc、mcu)的正常运行离不开程序,也就是我们平常所说的代码。将编写好的程序运行是为了得到一定的结果,从最本质上来讲计算机是用来计算的,而计算就是... -
64位操作系统能支持多大的内存?计算方法是什么?
2021-07-28 10:41:1564位系统使用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:图像内存计算和类的内存计算
2019-07-23 17:57:47图像处理16:图像内存计算和类的内存计算 (1)图像的内存计算: ①图像内存的计算公式: 图像所占内存=图像分辨率*一个像素所占内存空间 ②位深度: 如有位深度1,则可以组成种颜色,即二值图像; 如有位... -
内存大小与地址的对应关系以及计算方法
2020-09-07 17:40:42在计算机中要访问存储区,都是通过地址来进行访问的,包括所有的外设(比如串口、内存、硬盘等),都对应有一个访问地址,内存中的每一个字节对应唯一的一个地址,每一个地址代表一个字节 -
内存的计算
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 App在运行过程中占用系统内存的方法和CPU使用率的计算方法
2019-06-26 16:49:57最近在调研iOS中的OOM(Out-Of-Memory),iOS中存在一些机制,当系统的内存不够用时或者当前APP的使用内存超过了阈值,就会导致系统强杀当前APP,由于强杀当前APP的进程是系统做的事情,所以,当前APP是无法知道是什么... -
内存条带宽的换算方法以及DDR4内存理论带宽
2020-12-28 09:34:12DDR传输带宽 – 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:49top命令是我们平时工作中用...敲完top命令之后,按shift+p会以cpu使用百分比大小排序,shift+m会以内存使用大小排序。 先看资源总的情况: 1,任务队列信息,即第一行:第一个是系统当前时间 图中值:10:45:10 ... -
C/C++中结构体占用内存大小的计算方法
2016-10-04 22:54:42结构体在C语言中虽然经常使用,但是怎么计算一个结构体占用多大的内存,很多C语言的新手都没注意过,其实C语言的语法简单,难就难在它更偏向于与底层,与内存打交道。对于嵌入式方面来说,对C语言的要求更高,因为... -
内存容量、起始地址或结束地址的计算方法
2021-09-14 16:26:12内存容量、起始地址或结束地址的计算方法 -
PHP计算程序运行所占内存方法
2017-11-04 16:07:08php 获取程序运行之后所占内存大小 代码如下 $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作为微 -
共用体和结构体所占内存大小的计算方法一
2017-07-08 17:09:36方法一:结构体的内存大小=最后一个成员的偏移量 + 最后一个成员的大小 + 末尾的填充字节数偏移量:某个成员的实际地址和这个结构体首地址之间的距离。例.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=... -
“计算机的内存不足。请保存文件并关闭这些程序:xxx”解决方法
2021-08-31 10:17:433、点击或单击“高级”选项卡,然后在“虚拟内存”下,点击或单击“更改”。 4、清除“自动管理所有驱动器的分页文件大小”复选框。 在“驱动器[卷标]”下,点击或单击要更改的分页文件所在的驱动器。 点击或... -
windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足解决方法
2021-06-23 05:34:33其实我们可以通过“校准显示器”的方法来解决,下面小编教大家照片查看器无法显示此图片,因为计算机上的可用内存可能不足的解决方法。解决步骤如下:1、点击屏幕右下角“开始”图标,打开“控... -
计算机内存和磁盘的关系
2020-09-04 20:42:56计算机内存和磁盘的关系 前言 上篇文章详细讲了计算机内存的物理结构,逻辑结构以及在内存的基础上理解几种常见的数据结构。但是,计算机系统出了内存之外,还有一个非常重要的硬件,那就是磁盘。他们都是用于计算机... -
windows/vs如何获取程序内存使用量和时间花费
2017-06-28 22:57:371 获取内存使用量 获取内存使用量主要使用Psapi.h中声明的GetProcessMemoryInfo函数: ①、在程序中添加#pragma comment(lib,”Psapi.lib”),将Psapi.lib包含进去,或者通过在工程的属性中添加Psapi.lib; ...