日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 查看共享内存最大值,linux上更改共享内存的最大值

發布時間:2025/3/19 linux 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 查看共享内存最大值,linux上更改共享内存的最大值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux下更改共享內存的最大值

System V

IPC

參數

名字

描述

合理取值

SHMMAX

最大共享內存段尺寸(字節)

最少若干兆(見文本)

SHMMIN

最小共享內存段尺寸(字節)

1

SHMALL

可用共享內存的總數量(字節或者頁面)

如果是字節,就和 SHMMAX

一樣;如果是頁面,ceil(SHMMAX/PAGE_SIZE)

SHMSEG

每進程最大共享內存段數量

只需要 1 個段,不過缺省比這高得多。

SHMMNI

系統范圍最大共享內存段數量

類似 SHMSEG

加上用于其他應用的空間

SEMMNI

信號燈標識符的最小數量(也就是說,套)

至少ceil(max_connections / 16)

SEMMNS

系統范圍的最大信號燈數量

ceil(max_connections / 16) * 17

上用于其他應用的空間

SEMMSL

每套信號燈最小信號燈數量

至少 17

SEMMAP

信號燈映射里的記錄數量

參閱文本

SEMVMX

信號燈的最大值

至少 1000 (缺省通常是32767,除非被迫,否則不要修改)

最重要的共享內存參數是 SHMMAX

, 以字節記的共享內存段可擁有的最大尺寸。

如果你收到來自shmget

的類似Invalid argument

這樣的錯誤信息,那么很有可能是你超過限制了。

有些系統對系統里面共享內存的總數(SHMALL

)還有限制。

請注意這個數值必須足夠大。 (注意:SHMALL

在很多系統上是用頁面數,而不是字節數來計算的。)

系統里的最大信號燈數目是由SEMMNS

設置的,

因此這個值應該至少和 max_connections

設置一樣大,并且每十六個聯接還要另外加一個。? 參數SEMMNI

決定系統里一次可以存在的信

號燈集的數目。 因此這個參數至少應該為 ceil(max_connections % 16)

。

降低允許的聯接數目是一個臨時的繞開失敗的方法,這個啟動失敗通常被來自函數semget

的錯誤響應 No space left on device

搞得很讓人迷惑。

有時候還可能有必要增大SEMMAP

,使之至少按照 SEMMNS

配置。這個參數定義信號燈資源映射的尺寸,

可用的每個連續的信號燈塊在這個映射中存放一條記錄。

每當一套信號燈被釋放,那么它要么會加入到該映射中一條相連的已釋放的塊的入口中,要么注冊成一條新的入口。如果映射填滿了碎片,

那么被釋放的信號燈就丟失了(除非重起)。因此時間長信號燈空間的碎片了會導致可用的信號燈比應該有的信號燈少。

SEMMSL

參數,決定一套信號燈里可以有多少信號燈,

更改方法

Linux

缺省設置只適合小安裝(缺省最大共享內存是 32 MB)。不過,其它的缺省值都相當大,

通常不需要改變。最大的共享內存段設置可以用 sysctl

接口設置。

比如,要允許 128 MB,并且最大的總共享內存數為 2097152 頁(缺省):

$

sysctl -w kernel.shmmax=134217728

$

sysctl -w kernel.shmall=2097152

你可以把這些設置放到 /etc/sysctl.conf

里,在重啟后保持有效。

老版本里可能沒有 sysctl

程序, 但是同樣的改變可以通過操作 /proc

文件系統來做:

$

echo 134217728 >/proc/sys/kernel/shmmax

$

echo 2097152 >/proc/sys/kernel/shmall

另外可行的方法:

修改方法如下:修改/etc/rc.d/rc.local文件。

在文件的前面注釋的后面加入以下行:

#修改內核共享內存大小;

echo134217728>/proc/sys/kernel/shmmax;

#說明:這里的值為內存的一半;

#如果系統內存是256M,則值為134217728;

#如果系統內存是512M,則值為268435456;

修改完成以后,重起機器就搞定。

其它系統的修改方法

MacOS X

在 OS X 10.2 以及更造版本里, 編輯文件 /System/Library/StartupItems/SystemTuning/SystemTuning

并且用下列命令修改這些數值:

sysctl -w kern.sysv.shmmax

sysctl -w kern.sysv.shmmin

sysctl -w kern.sysv.shmmni

sysctl -w kern.sysv.shmseg

sysctl -w kern.sysv.shmall

在 OS X 10.3 及以后的版本里,這些命令移動到 /etc/rc

里面去了,必須在那里編輯。 你需要重新啟動才能讓設置生效。請注意 /etc/rc

通常會被

OS X 更新覆蓋 (比如 10.3.6 到 10.3.7),所以每次更新后你可能都需要重新編輯。

在這個平臺上,SHMALL

是用 4KB 頁來度量的。

還要注意有些版本的 OS X 將拒絕把 SHMMAX

的數值數值為非 4096 的倍數。

SCO OpenServer

缺省配置時,只允許每段 512KB 共享內存。 要增大設置,首先進入 /etc/conf/cf.d

錄。 要顯示當前的以字節記的 SHMMAX

,運行

./configure -y SHMMAX

設置 SHMMAX

的新值:

./configure SHMMAX=value

這里 value

是你想設置的以字節記的新值。 設置完了以后SHMMAX

重新制作內核

./link_unix

然后重起。

AIX

至少對于版本 5.1 而言,我們有必要為類似 SHMMAX

這樣的參數做特殊的配置,

因為這個參數可以配置為所有內容都當作共享內存使用。這就是類似 DB/2

這樣的數據庫常用的配置。

不過,我們可能有必要在 /etc/security/limits

里面修改全局 ulimit

ulimit

信息,因為文件大小的缺省硬限制(fsize

)以及文件數(nofiles

)可能太低了。

Solaris

至少到版本 2.6 為止,共享內存段的缺省最大設置對 PostgreSQL

來說是太低了。相關的設置可以在/etc/system

里面修改,

例如:

set shmsys:shminfo_shmmax=0x2000000

set shmsys:shminfo_shmmin=1

set shmsys:shminfo_shmmni=256

set shmsys:shminfo_shmseg=256

set semsys:seminfo_semmap=256

set semsys:seminfo_semmni=512

set semsys:seminfo_semmns=512

set semsys:seminfo_semmsl=32

你要重起系統令修改生效。

又見 http://sunsite.uakom.sk/sunworldonline/swol-09-1997/swol-09-insidesolaris.html

獲取關于 Solaris

里面的共享內存的信息。

UnixWare

在 UnixWare

7

上,缺省配置里的最大共享內存段是 512 kB。 要顯示SHMMAX

的當前值,

運行

/etc/conf/bin/idtune -g SHMMAX

就會顯示以字節記的當前的缺省的最小和最大值。 要給SHMMAX

置一個新值,運行:

/etc/conf/bin/idtune SHMMAX value

這里 value

是你想設置的以字節記的新值。

設置完SHMMAX

后,重建內核

/etc/conf/bin/idbuild -B

然后重起。

BSD/OS

共享內存.

缺省時是只支持 4 MB 的共享內存。請記住共享內存是不能分頁的;它是鎖在

RAM 里面的。 要增加你的系統支持的共享緩沖區數目,向你的內核配置文件里增加下面的行:

options "SHMALL=8192"

options "SHMMAX=\(SHMALL*PAGE_SIZE\)"

SHMALL

以 4KB 頁為單位計算,所以 1024 頁面代表 4 M 共享內存。

所以上面的東西把共享內存區域增加到 32 MB。 對于運行 4.3 或者更新版本的人,你可能需要增大 KERNEL_VIRTUAL_MB

, 超過缺省的 248

。

做完上面的修改之后,然后編譯內核并重起。

對于運行 4.0 或者更早的版本的, 請用 bpatch

找出當前內核的 sysptsize

值。它是啟動的時候動態計算的。

$ bpatch -r sysptsize

0x9 = 9

然后,把 SYSPTSIZE

修改為在內核配置文件里的一個硬代碼值。

用 bpatch

算出來的值,并且為你需要的每個額外的 4 MB 共享內存再加

1。

options "SYSPTSIZE=16"

sysptsize

不能用 sysctl

修改。

信號燈.

你可能還需要增加信號燈的數量;系統缺省的總數 60 只能允許大概 50 個 PostgreSQL

連接。 在內核配置文件里設置你需要的值,比如:

options "SEMMNI=40"

options "SEMMNS=240"FreeBSD

缺省設置只適合于很小的安裝(比如,缺省 SHMMAX

是 32 MB)。 我們可以用

sysctl

或者 loader

接口來修改。 下面的參數可以用 sysctl

設置:

$

sysctl -w kern.ipc.shmall=32768

$

sysctl -w kern.ipc.shmmax=134217728

$

sysctl -w kern.ipc.semmap=256

要想讓這些設置重啟后有效,修改 /etc/sysctl.conf

。

如果用 sysctl

,那么剩下的信號燈設置是只讀的, 但是信號燈可以在啟動的時候,在

loader

提示符下設置:

(loader)

set kern.ipc.semmni=256

(loader)

set kern.ipc.semmns=512

(loader)

set kern.ipc.semmnu=256

類似的,這些東西可以在 /boot/loader.conf

中保存,

以便重啟之后依然有效。

你可能還想配置內核,讓把共享內存裝載到 RAM 里,避免他們被交換到交換分區中。 這些可以通過使用 sysctl

設置 kern.ipc.shm_use_phys

來實現。

在 4.0 之前的 FreeBSD

版本類似 NetBSD

和 OpenBSD

(見下文)。

NetBSD

OpenBSD

編譯內核時需要把選項 SYSVSHM

和 SYSVSEM

打開。 (缺省是打開的。)共享內存的最大尺寸是由選項SHMMAXPGS

(以頁計)。 下面顯示了一個如何設置這些參數的例子(OpenBSD

使用的是 option

):

options SYSVSHM

options SHMMAXPGS=4096

options SHMSEG=256

options SYSVSEM

options SEMMNI=256

options SEMMNS=512

options SEMMNU=256

options SEMMAP=256

你可能原意使用 sysctl

設置將共享內存鎖在 RAM

中以避免它們被交換出去, 我們可以用 sysctl

設置 kern.ipc.shm_use_phys

來實現這個目的。

HP-UX

缺省設置看來對普通安裝是足夠的了。 在 HP-UX

10,SEMMNS

的出廠缺省是 128, 可能對大的數據庫節點來說太小了。

IPC

可以在 System Administration Manager(系統管理器)

(SAM

)下面的 Kernel

Configuration

->Configurable

Parameters

配置。你配置完了以后敲 Create A

New Kernel

選項。

總結

以上是生活随笔為你收集整理的linux 查看共享内存最大值,linux上更改共享内存的最大值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。