IC5Notice: We have upgraded developerWorks Community to the latest version of IBM Connections. For more information, read our upgrade FAQ.
Topic
  • 6 replies
  • Latest Post - ‏2009-10-28T11:22:17Z by karl.martin
SystemAdmin
SystemAdmin
90 Posts

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

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

    ‏2009-04-17T17:24:59Z  
    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

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

    ‏2009-10-21T03:49:36Z  
    • lple2003
    • ‏2009-04-17T17:24:59Z
    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.
    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

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

    ‏2009-10-21T10:45:11Z  
    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
    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

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

    ‏2009-10-21T11:33:06Z  
    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
    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

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

    ‏2009-10-22T00:25:31Z  
    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
    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

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

    ‏2009-10-28T11:22:17Z  
    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,
    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.