6 Replies Latest reply: Apr 30, 2015 4:49 PM by Chi Lum RSS

    Qlikview virtual memory usage


      Our Qlikview server has 32G of physical memory.

       

      The Governance Dashboard shows:

         QVS MAX RAM Usage = 17

         MAX Virtual Memory(VM) committed by QVS = 22

       

      Is it normal?  Does the Qlikview server uses more virtual memory than physical memory?

        • Re: Qlikview virtual memory usage
          Maxim Senin

          Hi.

           

          Per my experience QVS uses so much memory as it's needed for hosted applications. The only limit is a percent of total memory which can be loaded by QVS. As for virtual memory, I don't know any settings for this one maybe it depends on OS.

           

          Best regards,

          Maxim

          • Re: Qlikview virtual memory usage

            Thanks for the feedback Maxim.

             

            Qlikview is an in-memory tool and it should use as much physical memory as it can. But the Governance Dashboard showed our Qlikview server used a lot of virtual memory (22G) even if the server still had a lot of physical memory (15G free).  The working set (low=70%  high=90%).  By the way, our Qlikview server is a virtual server.  Why did Qlikview use virtual memory when there were plenty of physical memory?

              • Re: Qlikview virtual memory usage
                Maxim Senin

                Hi,

                 

                Since your server is virtual, what is where is a difference between physical and virtual memory?

                 

                I'm afraid this question can only be answered by Qlik experts if you and/or your company or client is an official client or partner.

                 

                My assumption is that Governace Dashboard may behave differently on physical computer and on VM. If total amount of loaded memory (physical + virtual) equals to total memory needed for loaded applications, this fact would confirm the assumption for me.

                 

                Wish you luck and please don't forget to update us about your findings.

                 

                Thanking you in advance.

                 

                Best regards,

                Maxim

              • Re: Qlikview virtual memory usage
                Petter Skjolden

                Yes - this is normal.

                 

                No QlikView server will not use more virtual memory than physical memory (on a non-virtualized server) for it's core features - but maybe for cacheing and non-critical (performance-wise) memory allocations. QVS has certain limits set up in QMC and stored in configuration files to make sure it does not use more physical memory than is available within some safety margins - Working Set: Low and High %. Working Set is what instructs Windows not to swap/page to disk. On a modern high-end server with lots of memory these standard percentages should be tuned.

                 

                Here comes probably more than you want to know - and probably not terribly easy to understand:

                 

                An application running under Windows has to commit virtual memory before it can start using any memory. If there is room in physical memory the commited virtual memory will be served by actual physical memory - but strictly under governance of the Windows OS memory management. So if Windows find the need to allocate physical memory to more pressing needs - for instance other needy applications - then parts of what is being used by QlikView Server might be swapped/paged to disk - hence the term virtual memory.

                 

                So no application can get physical memory unless it does it via virtual memory. Virtual memory is composed of the physical memory in a computer plus the paging files that is allocated. An application has to do memory allocation from it's virtual address space. But it can request to lock virtual memory pages into memory to ensure that they will not be paged to disk. To commit virtual memory is a way for an application to make sure that it has contiguous and accessible memory that will not be reused and not allocated to other purposes. That is why you will always see "Max virtual memory commited by QVS".

                 

                Virtual memory is something that existed long before Virtual Servers / Virtual Machines and the latter is in fact a separate virtualization from the first one.  There will still be physical memory allocated to things that run in a Virtual Server / Virtual Machine - but the HyperVisor running the underlying memory management is the real boss allocating memory across different VM's. No programcode can manipulate memory without it being in memory first - the paged memory is purely handled by the OS and Hypervisor.

                 

                This article on Microsoft's website might be interesting for those that needs to know more:

                 

                   Google this:   Virtual Memory Functions (Windows)

                 

                    and you will get a link to MSDN (Microsoft) for a more elaborate explanation...