程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> sybase使用內存的例子

sybase使用內存的例子

編輯:SyBase綜合文章

最近和論壇上的一些朋友討論ASE內存的使用,現在貼上我測試的一個例子,可能更容易說清楚問題。
環境 vmware 下的Linux 1CPU 320M內存,shmmax 256M , Sybase 12.53 ASE的配置
max memory 是131072,(256M)
allocate max shared memory=0
default data cache 80M
procedure cache size 3271 (6M)
total physical memory 63493 =124M 應該是data cache cache的值80+ procedure cache size 6M +其他系統的開銷。從這個配置看從 dafault data cache 還能增加256-124=120M
sp_configure "default data cache","200M"之後
total cache size 218M
total physical memory 131072=256M 當allocate max shared memory 為0 (缺省值)時候,ASE並不直接獲取max memory 所設定的值,而是根據配置的各項需要內存的參數值想OS申請內存,從 total physical memory 可以看到,目前ASE從OS一共獲得了多少內存。由於在Linux系統中,ASE能獲得的最大內存受到操作系統SHMMAX值的限制,而我的測試環境中這個值是256M,我們來修改一下max memory將其值超過256M看一下。
sp_configure "max memory",153600
這個時候,無論是修改這個參數,還是重啟ASE都是沒有問題的。雖然理論上ASE能夠使用的最大內存已經超過了操作系統SHMMAX參數的限制,但由於allocate max shared memory 配置的是0 ,僅當需要內存的時候才會想OS申請內存;這個時候我在ASE中各項需要內存的參數總值沒有超過256M,所以沒有任何的問題。但需要注意的是,此時的max memory設置的值僅僅是一個假象,並不代表你一定能使用它。增加dafalut data cache的值,sp_cacheconfig "default data cache","240M"
修改是能成功,但重啟ASE的時候,報錯
kernel os_create_region:can'n allocate 308498432 bytes
kernel   kbcreate:couldn't create kernel region。或者在保持 default data cache的大小不變的情況下,將allocate max shared memory的值改成1,重啟,也無法成功,同樣報不能獲得內存。這個測試說明雖然max memory的值能設置的超過SHMMAX,但實際ASE的內存使用並無法超過這個參數的設置。回到開始的參數:
max memory 256M,allocate max shared memory =0
defalut data cache 80M
執行sp_cacheconfig "default data cache","240M",會顯示
The current 'max memory' value '131072,is not sufficIEnt to change the size of cache 'default data cache' to '240M'(245760KB).'max memory'should be greater than 'total logical memory' '150636' required for the configation. 這個錯誤顯示當前的max memory 值小了,不足以擴展default data cache到240M,max memory 至少需要150636 (294M)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved