Topic
6 replies Latest Post - ‏2009-10-28T11:22:17Z by karl.martin
SystemAdmin
SystemAdmin
90 Posts
ACCEPTED ANSWER

Pinned topic big memory overhead with p-ave and multiple processes inside

‏2009-02-26T09:37:15Z |
Hello,
We try to virtualize some of our old linux applications in p-ave, but we have problems with the memory usage.Let's start with picture of our environment - RHEL 4.6 for power and p-ave 1.2.0.0 on it.On the old machine we have 2 gigs of RAM, and they are not full when let's say 300 processes are working.On the p-ave setup we have 4 gigs of RAM and they get exhausted very quickly - for example after 150 processes I have full 4 gigs and starting swap operations.
For every process inside p-ave I have a wrapper p-ave process, which I think causes the overhead.Can you give me some advise, is it possible to optimize the memory usage of the p-ave ?

BR
Updated on 2009-10-28T11:22:17Z at 2009-10-28T11:22:17Z by karl.martin
  • lple2003
    lple2003
    12 Posts
    ACCEPTED ANSWER

    Re: big memory overhead with p-ave and multiple processes inside

    ‏2009-04-17T17:24:59Z  in response to SystemAdmin
    Hi BR,

    Unfortunately, there is a memory usage overhead inherent in Lx86, due to the extra code translations it needs to maintain. The soon-to-be-released PowerVM Lx86 1.3.1 should incur less overhead than the earlier versions, so you may wish to try this version when it is available and see if it improves your application. If you still see much higher than expected memory use, please let us know and we may be able to investigate further to see if memory usage can be reduced in your environment.
    • SystemAdmin
      SystemAdmin
      90 Posts
      ACCEPTED ANSWER

      Re: big memory overhead with p-ave and multiple processes inside

      ‏2009-10-21T03:49:36Z  in response to lple2003
      Hello,

      My customer is having the same issue about the memory usage of Lx86. The version is 1.3.1 . By the ps command I see two processes running.

      powervm-lx-86-daemon: Which uses about 170M ( The VIRT row ) of virtual memory.
      powervm-lx: Which depends on what x86 application that is running, but it uses an average of 90000 virtual memory.

      In the manual I found an parameter, called the MEMORY_MONITOR_TRIGGER_RATIO.

      http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/topic/liaac/powervm-lx86-release-notes.htm?

      This seems to look like a solution for reducing the memory usage of Lx86.
      However, I fiddled with the parameter (changing it to 250 to 100) on my test machine but couldn't find any changes of the memory usage.

      My question is:

      1. Is the parameter MEMORY_MONITOR_TRIGGER_RATIO useful for reducing the memory usage of Lx86?
      2. (If 1. is yes) How do I use this parameter?
      3. (If 1. is no) Are there any other useful parameters I can use?

      thanks
      • karl.martin
        karl.martin
        9 Posts
        ACCEPTED ANSWER

        Re: big memory overhead with p-ave and multiple processes inside

        ‏2009-10-21T10:45:11Z  in response to SystemAdmin
        Hello,
        MEMORY_MONITOR_TRIGGER_RATIO=x is the correct configuration option too limit the amount of memory used a process.

        This option needs to be placed in powervm-lx86's config file (/etc/opt/powervm-lx86/config), you may have to create this file if it doesn't exist. Next powervm-lx86 will require a restart.

        1. /etc/init.d/powervm-lx86 start

        I am guessing that when you said that it made no difference to the memory usage you hadn't restarted powervm-lx86?

        Regards,
        Karl
        • karl.martin
          karl.martin
          9 Posts
          ACCEPTED ANSWER

          Re: big memory overhead with p-ave and multiple processes inside

          ‏2009-10-21T11:33:06Z  in response to karl.martin
          In version 1.3.1 the memory limit option is on by default and is set too 250%. Please can you set the limit too 100% (see my previous), restart powervm-lx86 and post the results.

          Thanks,
          Karl
          • SystemAdmin
            SystemAdmin
            90 Posts
            ACCEPTED ANSWER

            Re: big memory overhead with p-ave and multiple processes inside

            ‏2009-10-22T00:25:31Z  in response to karl.martin
            Thanks for you reply,

            I did restart the powervm-lx86 (but by using the "service" command. Inform me if this the wrong procedure).

            Here are the results
            <MEMORY_MONITOR_TRIGGER_RATIO=250>

            1. more /etc/opt/powervm-lx86/config
            MEMORY_MONITOR_TRIGGER_RATIO=250
            1. service powervm-lx86 restart
            2. top n 1 b | grep powervm
            365 root 16 0 90240 16m 5056 S 0.0 1.6 0:00.05 powervm-lx86
            373 root 21 0 88768 15m 5056 S 0.0 1.5 0:00.02 powervm-lx86
            398 root 21 0 95552 17m 5312 S 0.0 1.8 0:00.15 powervm-lx86
            32762 daemon 15 0 172m 4928 2560 S 0.0 0.5 0:00.01 powervm-lx86-da
            <MEMORY_MONITOR_TRIGGER_RATIO=100>

            1. more /etc/opt/powervm-lx86/config
            MEMORY_MONITOR_TRIGGER_RATIO=100
            1. service powervm-lx86 restart
            2. top n 1 b | grep powervm
            611 daemon 15 0 108m 4864 2560 S 0.0 0.5 0:00.02 powervm-lx86-da
            672 root 15 0 90240 16m 5056 S 0.0 1.6 0:00.05 powervm-lx86
            680 root 20 0 88768 15m 5120 S 0.0 1.5 0:00.02 powervm-lx86
            704 root 18 0 95552 17m 5312 S 0.0 1.8 0:00.14 powervm-lx86
            From the results, It seems that the memory usage of powervm-lx86-daemon has decreased. However sometimes the amount of virtual memory is the same even when MEMORY_MONITOR_TRIGGER_RATIO is set to 250 or 100.

            Here is another result

            <Another result when MEMORY_MONITOR_TRIGGER_RATIO=250>
            1. more /etc/opt/powervm-lx86/config
            MEMORY_MONITOR_TRIGGER_RATIO=250
            1. service powervm-lx86 restart
            2. top n 1 b | grep powervm
            7970 daemon 15 0 108m 4864 2560 S 0.0 0.5 0:00.01 powervm-lx86-da
            8032 root 16 0 90240 16m 5056 S 0.0 1.6 0:00.05 powervm-lx86
            8040 root 18 0 88768 15m 5120 S 0.0 1.5 0:00.02 powervm-lx86
            8064 root 21 0 95552 17m 5312 S 0.0 1.8 0:00.14 powervm-lx86

            So I am uncertain if MEMORY_MONITOR_TRIGGER_RATIO has an effect for decreasing the memory usage. ( I apologize for saying "no difference" in the previous comment")

            Also can you help me with the manual?
            In the manual it has:

            "The amount of virtual memory used by PowerVM Lx86 can be restricted, specified as a ratio to the amount of memory used by the x86 application being translated. When PowerVM Lx86's memory use exceeds this ratio, it will discard Power code translations until it is within the allowed threshold.

            The limit is set to 250% of the x86 application's memory usage by default; that is PowerVM Lx86 will not use more than two and a half times the amount of memory that the x86 application would have used. Setting the value to 100% will cap the memory usage when it reaches 1:1 with the x86 application usage. Setting the ratio to zero will disable the limit. Setting the limit to a low ratio, less than the default, may impact the performance of PowerVM Lx86 and hence the x86 application being translated."

            what does "x86 application's" mean in above? Does this mean the "powervm-lx86" process that can be seen in the ps (or top) command?

            Thanks,
            • karl.martin
              karl.martin
              9 Posts
              ACCEPTED ANSWER

              Re: big memory overhead with p-ave and multiple processes inside

              ‏2009-10-28T11:22:17Z  in response to SystemAdmin
              Hi there,

              Memory limit primarily applies to memory used for code translations, and so for smaller applications there might not be much difference between using the limit and not. The real difference can only be spotted when running larger programs that would require a lot more memory.

              'x86 applications' simply means the translated process, it will appear as a powervm-lx86 process in a native top/ps. If you run ps/top translated the name of the process will be shown as you would expect.