How can I track memory utilisation on a Solaris10 server

Posted on 2008-10-09
Last Modified: 2013-12-27
I have a Solaris10 server running two non-global zones. OVPA is running on the global zone and tells me that the memory utilisation is climbing day on day. However when I do a 'ps -elfZ' over a period of time the SZ column does not show the same increase. In fact day on day it is broadly the same. The increase may well be the buffer cache as 'ps' will not be counting this, so how might I be able to prove this.
What will happen when memory utilisation (according to OVPA) reaches 100%.
Oracle is running on one of the zones.
Question by:wasfg01
  • 2
  • 2

Expert Comment

ID: 22676778

You can use : prstat -Z

you see details by zone  like this example

but on this system you have no non global zone only global zone zoneid 0

but in your case you must see other line by zone

  1253 http       16M   13M sleep   59    0   0:04:19 0.0% httpd/29
 27204 root     3608K 3600K cpu0    59    0   0:00:00 0.0% prstat/1
  1238 root     5920K 3440K sleep   59    0   0:01:31 0.0% rotatelogs/1
  1252 http       16M   13M sleep   59    0   0:04:26 0.0% httpd/29
  1251 http       16M   13M sleep   59    0   0:04:33 0.0% httpd/29
  1313 noaccess  178M  102M sleep   59    0   0:31:15 0.0% java/39
 27200 root     3168K 2768K sleep   59    0   0:00:00 0.0% bash/1
  1361 root       16M   14M sleep   59    0   0:11:51 0.0% ovcd/28
   121 daemon   4664K 3664K sleep   59    0   0:00:03 0.0% kcfd/5
   291 root     2088K 1232K sleep   59    0   0:00:00 0.0% smcboot/1
 26450 root     2568K 2168K sleep   59    0   0:00:00 0.0% ttymon/1
   270 root     2512K 2008K sleep   59    0   0:00:00 0.0% ttymon/1
   258 root     2176K 1672K sleep   59    0   0:00:00 0.0% sac/1
  1231 root     9248K 6064K sleep   59    0   0:01:17 0.0% httpd/1
   292 root     2088K 1232K sleep   59    0   0:00:00 0.0% smcboot/1
   254 root     7024K 5392K sleep   59    0   0:00:17 0.0% inetd/4
   142 root     6144K 5584K sleep   59    0   0:01:17 0.0% nscd/31
   377 root     5152K 1848K sleep   59    0   0:00:00 0.0% automountd/2
   252 daemon   2464K 2080K sleep   60  -20   0:00:00 0.0% lockd/2
   248 daemon   2872K 2544K sleep   59    0   0:00:00 0.0% statd/1
   132 root     4712K 4128K sleep   59    0   0:00:01 0.0% picld/6
   241 daemon   2872K 2360K sleep   59    0   0:00:00 0.0% rpcbind/1
   212 root     1440K 1032K sleep   59    0   0:00:00 0.0% efdaemon/1
   120 root     3592K 2912K sleep   59    0   0:00:00 0.0% devfsadm/7
     0       81  300M  423M   2.6%   1:35:56 0.2% global

You can use dtrace too some scripts you can use for your probleme  :

I hope that help you


Author Comment

ID: 22677186
prstat -Z is giving me similar numbers to ps -elfZ. I am worried that when memory util (according to OVPS) reaches 100% we will see lots of bad paging going on, annonymous and executables, which will slow things down considerably.
I doubt I will get authority to run 3rd party scripts on this box unfortunately, which I have to say look very useful.
Can I be sure that it is the filesystem buffer cache that is getting bigger and therefore doing what it is supposed to do?

Assisted Solution

awa2008 earned 60 total points
ID: 22677266
hello ,

dtrace is a standard tools of solaris10

it is just script you copy and paste

about solaris filesystem cache you can found maybe info at this url :

but you should look at your appli oracle for see what is the root cause of probleme

maybe some process oracle go to infinte loop


Accepted Solution

urgoll earned 65 total points
ID: 22678348
Regarding your concern:
    The increase may well be the buffer cache as 'ps' will not be counting this, so how might I be able to prove this.

The tool you need is mdb. Look at snippet for a sample output for a server with 8GB of memory, where the kernel uses 3355MB, the page cache (your buffer cache) uses 153MB and there is 1939MB of free memory.

Also note that if you are using ZFS in Solaris 10, the ZFS buffer is accounted as kernel memory, not page cache (hence the very large 3355MB of kernel memory in the sample output). To get more insight into the ZFS ARC (as the ZFS buffer is called), there's a handy script at:

Note however that 'free' memory is effectively wasted, as it is not working for you (in the same way that money in your pocket is not generating interests). Solaris tries to minimize free memory (up to a point) by caching block device access so as to speed-up future disk access. Such buffers can be freed very easily should an application request more memory, so it is not a problem.

Hope this helps,
# mdb -k

Loading modules: [ unix krtld genunix specfs dtrace cpu.AuthenticAMD.15 ufs md ip sctp usba fcp 

fctl lofs zfs random nfs crypto fcip cpc logindmux ptm ipc ]

> ::memstat

Page Summary                Pages                MB  %Tot

------------     ----------------  ----------------  ----

Kernel                     859062              3355   41%

Anon                       675625              2639   32%

Exec and libs                7994                31    0%

Page cache                  39319               153    2%

Free (cachelist)           110881               433    5%

Free (freelist)            385592              1506   19%

Total                     2078473              8119

Physical                  2049122              8004

Open in new window


Author Closing Comment

ID: 31504579
Thanks guys. This turned out to be more complex than I first thought. Appreciate your time.

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
AIX print queues constantly going down 11 490
pauing printer deamon in AIX 10 57
Need some help with tutorials or training material/videos in unix 1 69
ftpcommand 2 56
I promised to write further about my project, and here I am.  First, I needed to setup the Primary Server.  You can read how in this article: Setup FreeBSD Server with full HDD encryption (…
Java performance on Solaris - Managing CPUs There are various resource controls in operating system which directly/indirectly influence the performance of application. one of the most important resource controls is "CPU".   In a multithreaded…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now