Estimate size of virtual portion of shared memory
Posted in 2013
Topics: Performance & Tuning, Server Administration
Hi, I´m trying to estimate the size of the initial virtual segment of shared memory to give an accurate value to SHMVIRTSIZE in my ONCONFIG file. I´ve found the formula in IDS 11.50 Performance Guide, but in the first step it is said: "Estimate a value for the thread pool after booting variable. This variable is partially dependent on the number of virtual processors.", and I can´t find any information about this estimation or any samples. Please, could anybody give a little light over this value. Thanks in advance. My configuration: IDS 11.50 FC9, RedHat 6.3 x86-64, 16 CPU, 64 Gb RAM
You just need a guesstimate right now based on some basic info, over time and as your system runs you will be able to fine tune the instance based on the actual needs. First question. Is the server dedicated to the Informix instance or is it used for other applications? Based on the answer to this question, you can determine what percentage of that 64GB RAM will be used by Informix. If the server is dedicated to Informix, you can allocated 80-90% or 50 to 58GB or RAM to Informix. If other apps on this server need memory, figure out what they need and subtract that from your 50 to 50GB number to get the total amount of memory the engine needs. From here you could try and determine how you want to split that 58GB between the buffers (Resident segment) and Virtual Segment, but in my opinion 50GB is a lot (all of my engines use < 3.5GB total and my Innovator-C engines use 2GB total and they all are very busy and perform very well) so you could just start with a 50/50 split and go from there. Give 50GB / 2 = 25GB = 13107200 2K buffers or 6553600 4K buffers (depending on your systems page size, adjust if you are using any configurable page sizes) and give 25GB to SHMVIRTSIZE. This should be good enough to start. Monitor the read cache hit % over time and monitor the amount of virtual segment memory being used. If your read cache hit % dips below an acceptable level (99%) and you consistently have virtual memory going unused then you can reconfigure to give more buffers and less virtual segment. If the engine is dynamically adding virtual segments and the read cache is acceptable then lower the number of buffers and increase the SHMVIRTSIZE. Andrew -----Original Message----- From: ids-bounces@iiug.org [mailto:ids-bounces@iiug.org] On Behalf Of RAFAEL GOMEZ Sent: Wednesday, April 03, 2013 10:13 AM To: ids@iiug.org Subject: Estimate size of virtual portion of shared memory [29961] Hi, I´m trying to estimate the size of the initial virtual segment of shared memory to give an accurate value to SHMVIRTSIZE in my ONCONFIG file. I´ve found the formula in IDS 11.50 Performance Guide, but in the first step it is said: "Estimate a value for the thread pool after booting variable. This variable is partially dependent on the number of virtual processors.", and I can´t find any information about this estimation or any samples. Please, could anybody give a little light over this value. Thanks in advance. My configuration: IDS 11.50 FC9, RedHat 6.3 x86-64, 16 CPU, 64 Gb RAM **************************************************************************** *** Forum Note: Use "Reply" to post a response in the discussion forum.
Hi Andrew. Thanks for your answer. That´s the way I allways have used to estimate shared memory, but I intended a more accurate value whit the formaula I´ve found in Performan Guide. This host will accommodate 3 IDS servers. My first idea was to allocate 16 Gb to each one (75% of total RAM), giving around 2 Gb to resident segment (762976 2Kb buffers) and 1 Gb to initial virtual segment, letting it to grow on demand, by 256 Mb additional segments. (for each IDS server). I´d like not waste RAM, as then I could use this host to other not heavy tasks to not degrade Informix performance. Greetings. Rafael Gómez.
Any particular reason to host 3 engines on the same server and not just have 1 engine do the job of all 3? Why introduce the overhead of managing 3 instances when you could just manage 1? Also, I would think 1 engine doing the job of all 3 would perform better than 3 individual instances. As for not wasting RAM, I would think if the only other things running on this server are "not heavy tasks" that I presume aren't memory hogs and you don't allocate as much RAM to Informix as possible, then you ARE wasting it. Saving 25% of memory for the OS/other applications that will never be used isn't as good as giving that memory to Informix for additional buffers in my opinion. Andrew -----Original Message----- From: ids-bounces@iiug.org [mailto:ids-bounces@iiug.org] On Behalf Of RAFAEL GOMEZ Sent: Thursday, April 04, 2013 4:57 AM To: ids@iiug.org Subject: Re: RE: Estimate size of virtual portion of sh.... [29976] Hi Andrew. Thanks for your answer. That´s the way I allways have used to estimate shared memory, but I intended a more accurate value whit the formaula I´ve found in Performan Guide. This host will accommodate 3 IDS servers. My first idea was to allocate 16 Gb to each one (75% of total RAM), giving around 2 Gb to resident segment (762976 2Kb buffers) and 1 Gb to initial virtual segment, letting it to grow on demand, by 256 Mb additional segments. (for each IDS server). I´d like not waste RAM, as then I could use this host to other not heavy tasks to not degrade Informix performance. Greetings. Rafael Gómez. **************************************************************************** *** Forum Note: Use "Reply" to post a response in the discussion forum.
Hi Andrew. Yes, it sounds strange to have 3 IDS servers on same host, I should explain it: I have 215 DDBB allocated in 10 IDS 10.00 servers over old IBM S460, and now I´m in the task of migrate all of them to 4 new hosts. The distribution of databases in 10 engines, not only one, is a business requirement that I have to accept. The underlying reason is to guaratee the availability of apps grouped in each instance in case of fail on another IDS server. High bosses trust much more on independent instances than in HDR, best solution could be have 10 hosts, but I only have 4. I can´t convince them to use 4 hosts running HDR over single instance with 215 DDBB, it´s a lost battle. It´s more than likely that a single instance would make perfectly the job with very generous resources, but I´m not allowed to do it. I´m leaving 25% RAM free because I must leave resources free for other apps. These hosts will be mainly dedicated to Informix, but not only. Anyway, I think 16 Gb RAM is good enough for IDS. I´ll start with your recomendation, as traditional way 50-50 to resident and virtual, tuning for some weeks on real workload. Greetings.