Performance problem - mutexes with multi-cpu machine

Hi!
My company is developing multi-threaded server program for
multi-cpu machine which communicates with Oracle database on separate
machine. We use Solaris 7, Workshop 5 CC and pthreads API.
We tested our program on 4 CPU E4500 with 2 CPU E420 Oracle server.
We upgraded E4500 from 4 to 8 CPU and to our surprise instead of
performance improvement we got performance degradation ( 8 CPU runs
about 5% slower than 4 CPU ).
After a long investigation we found out that under stress load most of the
time our performs lwpmutex related operation.
With truss -c statistics was 160 secs in mutex operations and
about 2 secs was read/write in oracle client side library.
Here is output of truss for example:
19989 29075/5: 374.0468 0.0080 lwp_mutex_lock(0x7F2F3F60 = 0
19990 29075/31: 374.0466 0.0006 lwp_mutex_wakeup(0x7F2F3F60) = 0
19991 29075/5: 374.0474 0.0006 lwp_mutex_wakeup(0x7F2F3F60) = 0
19992 29075/30: 374.0474 0.0071 lwp_mutex_lock(0x7F2F3F60) = 0
19993 29075/30: 374.0484 0.0010 lwp_mutex_wakeup(0x7F2F3F60) = 0
19994 29075/31: 374.0483 0.0017 lwp_mutex_lock(0x7F2F3F60) = 0
19995 29075/5: 374.0492 0.0018 lwp_mutex_lock(0x7F2F3F60) = 0
19996 29075/31: 374.0491 0.0008 lwp_mutex_wakeup(0x7F2F3F60) = 0
19997 29075/5: 374.0499 0.0007 lwp_mutex_wakeup(0x7F2F3F60) = 0
19998 29075/30: 374.0499 0.0015 lwp_mutex_lock(0x7F2F3F60) = 0
19999 29075/5: 374.0507 0.0008 lwp_mutex_lock(0x7F2F3F60) = 0
20000 29075/30: 374.0507 0.0008 lwp_mutex_wakeup(0x7F2F3F60) = 0
20001 29075/5: 374.0535 0.0028 lwp_mutex_wakeup(0x7F2F3F60) = 0
20002 29075/30: 374.0537 0.0030 lwp_mutex_wakeup(0x7F2F3F60) = 0
20003 29075/31: 374.0537 0.0046 lwp_mutex_lock(0x7F2F3F60) = 0
20004 29075/5: 374.0547 0.0012 lwp_mutex_lock(0x7F2F3F60) = 0
20005 29075/31: 374.0546 0.0009 lwp_mutex_wakeup(0x7F2F3F60) = 0
20006 29075/5: 374.0554 0.0007 lwp_mutex_wakeup(0x7F2F3F60) = 0
20007 29075/30: 374.0557 0.0020 lwp_mutex_lock(0x7F2F3F60) = 0
20008 29075/31: 374.0555 0.0009 lwp_mutex_wakeup(0x7F2F3F60) = 0
20009 29075/5: 374.0564 0.0010 lwp_mutex_lock(0x7F2F3F60) = 0
20010 29075/30: 374.0564 0.0007 lwp_mutex_wakeup(0x7F2F3F60) = 0
20011 29075/5: 374.0572 0.0008 lwp_mutex_wakeup(0x7F2F3F60) = 0
20012 29075/28: 374.0574 0.0170 lwp_mutex_lock(0x7F2F3F60) = 0
20013 29075/31: 374.0575 0.0020 lwp_mutex_wake(0x7F2F3F60) = 0
We have a several question:
1. We always get the same mutex address : 0x7F2F3F60 even with different
binaries. It looks that all threads wait on one and magic
mutex. Why?
2. We read in article on unixinsider.com that on Solaris when mutex is
unlocked all the threads waiting on this mutex are waked up. It also looks so
from truss output. What is solution for this problem? unixinsider.com
recommends native Solaris read-write lock with all threads as writers?
Is there any other solution? Should in improve performance?
3. We heard that Solaris 8 has better pthreads implementation using a
one-level threading model, where threads are one-to-one with
lwp, rather than the two-level model that is used in the
standard libthread implementation, where user-level threads are
multiplexed over possibly fewer lwps. Are mutexes in this library
behave in "Solaris 7" way or do it put thread to sleep when it unlocks
the mutex? Is it possible to use this library on Solaris 7?
4. Is there plug - in solution like mtmalloc or hoard for new/delete that change
pthread mutexes?
Thank you in advance for your help,
Alexander Indenbaum

<pre>
Hi!
My company is developing multi-threaded server program for
multi-cpu machine which communicates with Oracle database on separate
machine. We use Solaris 7, Workshop 5 CC and pthreads API.
We tested our program on 4 CPU E4500 with 2 CPU E420 Oracle server.
We upgraded E4500 from 4 to 8 CPU and to our surprise instead of
performance improvement we got performance degradation ( 8 CPU runs
about 5% slower than 4 CPU ).
After a long investigation we found out that under stress load most of the
time our performs lwpmutex related operation.
With truss -c statistics was 160 secs in mutex operations and
about 2 secs was read/write in oracle client side library.
Here is output of truss for example:
19989 29075/5: 374.0468 0.0080 lwp_mutex_lock(0x7F2F3F60) = 0
19990 29075/31: 374.0466 0.0006 lwp_mutex_wakeup(0x7F2F3F60) = 0
19991 29075/5: 374.0474 0.0006 lwp_mutex_wakeup(0x7F2F3F60) = 0
19992 29075/30: 374.0474 0.0071 lwp_mutex_lock(0x7F2F3F60) = 0
19993 29075/30: 374.0484 0.0010 lwp_mutex_wakeup(0x7F2F3F60) = 0
19994 29075/31: 374.0483 0.0017 lwp_mutex_lock(0x7F2F3F60) = 0
19995 29075/5: 374.0492 0.0018 lwp_mutex_lock(0x7F2F3F60) = 0
19996 29075/31: 374.0491 0.0008 lwp_mutex_wakeup(0x7F2F3F60) = 0
19997 29075/5: 374.0499 0.0007 lwp_mutex_wakeup(0x7F2F3F60) = 0
19998 29075/30: 374.0499 0.0015 lwp_mutex_lock(0x7F2F3F60) = 0
19999 29075/5: 374.0507 0.0008 lwp_mutex_lock(0x7F2F3F60) = 0
20000 29075/30: 374.0507 0.0008 lwp_mutex_wakeup(0x7F2F3F60) = 0
20001 29075/5: 374.0535 0.0028 lwp_mutex_wakeup(0x7F2F3F60) = 0
20002 29075/30: 374.0537 0.0030 lwp_mutex_wakeup(0x7F2F3F60) = 0
20003 29075/31: 374.0537 0.0046 lwp_mutex_lock(0x7F2F3F60) = 0
20004 29075/5: 374.0547 0.0012 lwp_mutex_lock(0x7F2F3F60) = 0
20005 29075/31: 374.0546 0.0009 lwp_mutex_wakeup(0x7F2F3F60) = 0
20006 29075/5: 374.0554 0.0007 lwp_mutex_wakeup(0x7F2F3F60) = 0
20007 29075/30: 374.0557 0.0020 lwp_mutex_lock(0x7F2F3F60) = 0
20008 29075/31: 374.0555 0.0009 lwp_mutex_wakeup(0x7F2F3F60) = 0
20009 29075/5: 374.0564 0.0010 lwp_mutex_lock(0x7F2F3F60) = 0
20010 29075/30: 374.0564 0.0007 lwp_mutex_wakeup(0x7F2F3F60) = 0
20011 29075/5: 374.0572 0.0008 lwp_mutex_wakeup(0x7F2F3F60) = 0
20012 29075/28: 374.0574 0.0170 lwp_mutex_lock(0x7F2F3F60) = 0
20013 29075/31: 374.0575 0.0020 lwp_mutex_wakeup(0x7F2F3F60) = 0
We have a several question:
1. We always get the same mutex address : 0x7F2F3F60 even with different
binaries. It looks that all threads wait on one and magic
mutex. Why?
2. We read in article on unixinsider.com that on Solaris when mutex is
unlocked all the threads waiting on this mutex are waked up. It also looks so
from truss output. What is solution for this problem? unixinsider.com
recommends native Solaris read-write lock with all threads as writers?
Is there any other solution? Should in improve performance?
3. We heard that Solaris 8 has better pthreads implementation using a
one-level threading model, where threads are one-to-one with
lwp, rather than the two-level model that is used in the
standard libthread implementation, where user-level threads are
multiplexed over possibly fewer lwps. Are mutexes in this library
behave in "Solaris 7" way or do it put thread to sleep when it unlocks
the mutex? Is it possible to use this library on Solaris 7?
4. Is there plug - in solution like mtmalloc or hoard for new/delete that change
pthread mutexes?
Thank you in advance for your help,
Alexander Indenbaum
</pre>

Similar Messages

  • Interrupt in a multi-cpu machine

    Hi,
    I want to know how the interrput is dealed in a multiprocessor environment. Anyone can tell me or point me to the doc. to check?
    Will interrupt be sent to different CPU equally or they are given to one default CPU?
    Thanks!
    Yong

    I've seen, however that most operating systems like processor affinity and
              won't go out of their way to spread threads across CPUs due to CPU cache
              synchronization expense. Running two WLS instances on a dual processor
              machine will give you more throughput.
              Mike Reiche <[email protected]> wrote in message
              news:3bcf1d58$[email protected]..
              >
              > You don't need two instances of WL to take advantage of two CPUs.
              >
              > Each WL instance in a cluster requires its own IP address. You can refer
              to them
              > by their IP address.
              >
              > Mike
              >
              >
              > "jyothi" <[email protected]> wrote:
              > >
              > >hi,
              > >if we need to plan a cluster on a multi-cpu machine..how does
              > >the installation of wls go..do we need to install two instances of WLS
              > >on the
              > >machine or do we have to install only one instance??
              > >
              > >also wrt wls6.0, through the admin console running on another machine..we
              > >create
              > >new entries for machine's first and then we create new servers .. how
              > >do we associate
              > >the two servers running on the same multi-cpu machine with the machine
              > >name??
              > >
              > >thanks
              > >jyothi
              >
              

  • IMS 52 Imap crash/hang with multi CPU?

    Hello,
    Running on NT with SP6a, noticed that with multiple cpu imap just hangs after a while. The process is still there, and it is not taking up any cpu time. It just won't respond, even telneting to the port. Looks like for every attempted connection there is a close_wait in the netstat. Anyone else see this problem?

    Yes, I'm getting this too. Sun engineering has yet to fix it. I have a case open with them.

  • Performance problems on non-Intel CPU's

    Hello,
    Recently I have been looking into tracking down a performance problem with Adobe Flash on a couple of different Linux platforms.  I understand that there is limited hardware acceleration and that is actually important for my question.  On multiple netbooks I tested similar Flash based content and found that content my EeePC 701 with a 600Mhz Intel Celeron could play, a netbook with a VIA processor running at 1Ghz couldn't even come close to playing.  Running sysprof I see that 80+% of the time is spent within the libflashplayer library.
    To my point, which you may or may not want to answer.  Is it possible that Adobe uses Intel's compiler to produce their binaries?  I only ask this because it has been documented that Intel's compiler explicitely disables certain optimizations for non-GenuineIntel processors, http://www.theinquirer.net/inquirer/news/1567108/intel-compiler-cripples-code-amd-via-chip s
    .   I have also examined the codepaths and see that libflashplayer.so does check /proc/cpuinfo for the vendor_id string in it's initialization logic.
    I don't want to start conspiracy theories, but if any of this is valid at all, could it please be fixed? Thanks.

    http://www.apple.com/support/bootcamp/
    Only Intel when talking Macs, no PowerMacs or G4 etc.

  • Performance Problem: qttask.exe 100% CPU

    I have a new 2nd Generation iPod Shuffle. So I only want music files, and at this point they are all from my existing CD's and Windows Media Player files.
    I run on an HP machine 640 mb memory, AMD 1295mhz running Windows XP Home SP 2. Definitely an old dawg.
    I loaded iTunes and QuickTime. Everything works but the qttask.exe program runs at close to 100% CPU even with iTunes closed. Which slows everything down a bit...
    I could not get iTunes to run w/o QT. I unchecked all of the video and graphics selection and updates on QT, but no luck. Does anyone have suggestion for settings or one of the QT 'clones' that don't have or use all of that video overhead or ???
    Thanks!
    Grutzbo

    I am not sure why, but after doing all of the cleanup, unload and re-install recommended by Apple - the gttask.exe still ran at 100% CPU. So I took a shot at your recommendation and unflagged it in the Startup tab in the msconfig menu.
    And iTunes seems to be working ok and the CPU usage bounces around between 30%-50%. Which aint bad for this broken down old box! So thanks, Mr Black!!
    I am of course curious about what qttask.exe is supposed to do and why everything works without it? But I don't understand how water gets into the upstairs faucet so I don't need to know unless there is some risk. (I only use it for my G2 Shuffle so I can live without most of QT functionality.)
    Thanks again!!
    HP   Windows XP   Old Dawg

  • Exporting SCOM Performance, Problem Alerts with PowerShell to CSV?

    Is there a way to export System Center Operations Manger Performance and Problem Alerts to a CSV with the number of Counts and Milliseconds for the application that caused the issue?
    When using System Center Operations Manager to gather performance events on applications, it would be nice to be able to export this data out to Excel. 
    Is there a PowerShell script that is available to export different event types? For example with for a performance alert or a problem alert, or highest usage. 
    Using System Center 2012 R2.
    Thank you!
    Jeff

    Hi Jeff,
    I dont have a powershell script , But surely have a SQL query which will pull the performance data from the operationsmanager DB.
    Below is the one.
    select Path, ObjectName, CounterName, InstanceName, SampleValue, TimeSampled
    from PerformanceDataAllView pdv with (NOLOCK)
    inner join PerformanceCounterView pcv on pdv.performancesourceinternalid = pcv.performancesourceinternalid
    inner join BaseManagedEntity bme on pcv.ManagedEntityId = bme.BaseManagedEntityId
    where ObjectName = 'Memory' and CounterName = 'Available MBytes' and Path like '%Your Agent name%'
    order by countername, timesampled
    You will need to mention the Object name and counter for what you are looking for and in the path mention the agent name.
    If you want the counter for all the agents then the Command should be altered as follows: Path like '%%'
    '%%' - Represents that you want the perfmon data of the specific Object and counter on all the SCOM Agents.
    ===============================
    ==============================================
    All perfmon data of all servers:
    select Path, ObjectName, CounterName, InstanceName, SampleValue, TimeSampled
    from PerformanceDataAllView pdv with (NOLOCK)
    inner join PerformanceCounterView pcv on pdv.performancesourceinternalid = pcv.performancesourceinternalid
    inner join BaseManagedEntity bme on pcv.ManagedEntityId = bme.BaseManagedEntityId
    where ObjectName LIKE '%%' and CounterName LIKE '%%' and Path like '%%'
    order by countername, timesampled
    ====================================================
    All perfmon data for only a specific agent:
    select Path, ObjectName, CounterName, InstanceName, SampleValue, TimeSampled
    from PerformanceDataAllView pdv with (NOLOCK)
    inner join PerformanceCounterView pcv on pdv.performancesourceinternalid = pcv.performancesourceinternalid
    inner join BaseManagedEntity bme on pcv.ManagedEntityId = bme.BaseManagedEntityId
    where ObjectName LIKE '%%' and CounterName LIKE '%%' and Path like '%Your Agent name%'
    order by countername, timesampled
    Gautam.75801

  • [Solved] Performance Problems (Hitching) with Source Engine games ( CSGO, DOTA 2)

    Hey All,
    I have a GT70 2PC Dominator.
    When I play CSGO I have a problem where the game will randomly hitch/hang for up to 5 seconds. Whatever audio is playing will just continue to loop until the everything goes back to normal. My FPS tends to hover around 120 FPS and dips pretty low. This happens in DOTA 2 as well but to a much much lesser extent.
    I play CSGO on my desktop as well so I am very familiar with the configuration files etc. My FPS_MAX is set to 300 so it' s not capped I have no idea what's going on. I've tried lowering graphic settings etc. While I'm very familiar with CSGO this is my first gaming laptop.
    I did run windows update and the nvidia update through the geforce experience so all of my drivers should be up to date as well.
    I've tried setting the battery to "High Performance" to see if that would change anything. I made sure I was plugged into a laptop as well. But I'm not sure if there are any specific MSI settings or something else to turn on.
    I play other graphically intensive games on higher settings probably the most notable is the MMORPG ArchAge. While I may experience slow downs I never have the game just hitch or hang like it does in CSGO.
    Any help would be greatly appreciated!
    Thanks All!

    Quote from: brackstone;112334
    Even if that worked I would not want that to be the solution. SSDs have a shorter lifespan than HDD and I'd rather not put a lot of stuff on it considering the replacement cost.
    I'm pretty sure MSI feels the same way as they've labeled it "OS_Install"
    What's the brand/model of your HDD?
    1. Try to remove HDD high usage related activities by following FAQs.
        I) http://www.msi.com/pic/faq/[email protected]
        II) http://www.msi.com/faq/nb-740.html
    2. Install The Crystal Disk Info utility and the HDD supports the APM feature, then change its setting.
        I)  Set the APM Control to the highest, in order to prevent the drive enters stand by mode after certain time.
           *Make sure you set the function everytime you restart the system.
           a. Download and install the crystal disk info utility.
           b. Open CrystalDiskInfo.
           c. Choose Function > Advanced Feature > APM Control.
           d. Choose your hard drive.
           e. Set APM function to FEh Maximum performance.
        II) Set the power plan to the maximum. (Control Panel> Hardware and Sound> Power Options>(Hide additional plans) High performance.

  • Limiting WLS to a single processor on a multi-CPU machine

    How can I configure WLS to only use a single processor on a multiprocessor
    machine? Will launching with green threads do the trick? Is there some way
    to permit the use of native threads but to exclude a set of processors?
    How do I do this under WLS318? WLS451?
    Any help is much appreciated.
    -Adam Galper

    Adam Galper wrote:
    How can I configure WLS to only use a single processor on a multiprocessor
    machine?It's os-dependent, but most will allow you to bind a process to a single
    or set of cpus.
    Will launching with green threads do the trick?Yes.
    Is there some way
    to permit the use of native threads but to exclude a set of processors?
    Yes.
    == Rob
    >
    How do I do this under WLS318? WLS451?Any help is much appreciated.
    >
    -Adam Galper

  • Creating database on multi cpu machines

    Hello:
    I want to issue the create database statements on a machine that has multiple cpu.
    Would like to to know what are the parameters if any need to specify in the ora file and anything specific needs to be done in the create database statement and if there are other considerations.
    Thanks,

    You can utilize there parameters if you have multiple cpu servers.
    parallel_max_servers integer 5
    parallel_min_percent integer 0
    parallel_min_servers integer 0
    parallel_server boolean FALSE
    parallel_server_instances integer 1
    parallel_threads_per_cpu integer 2
    Regards,
    http://askyogesh.com

  • Multi CPU Solaris.

    Hi,
    Is there a recommended number of Weblogic instances when running on a
    Multi-CPU machine with more than 8, in this particular case - 28.
    The server behaves really bad if I only run one instance there is too
    much time spent in the treads waiting to obtain a lock for accessing a
    SyncronizedMap (in
    webblogic.kernel.ResettableThreadLocal.currentStorage()) and the CPUs
    are underutilized.
    After a few experiments we found out that 1 instance per 4-6 CPUs is OK,
    but I was wondering whether you could recommend something. Also since
    there's limit of 2GB per JVM if we wanted to utilize more then there is
    no choice.
    Thanks,
    Deyan
    [dejan_bektchiev.vcf]

    Yes that what my problem is.
    Thanks a lot.
    --dejan
    Dimitri Rakitine wrote:
    It is not a hack - it is a trick ;-) (that's how WLS time services work). I suggested
    it because it sounded like you identified synchronization contention caused by using
    non-WebLogic threads in your application.
    Deyan D. Bektchiev <[email protected]> wrote:
    This is a multi-part message in MIME format.
    --------------67801AC9090398390A36FFEF
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    Dimitri,
    Is this supported or is it really a hack?
    Because I could still run multiple JVMs and when we want to utilize more memory we
    are forced to do that anyway as the limit is just below 2GB/JVM and if you have even
    16GB that already automatically means 7-8 JVMs which usually does the trick.
    Thanks,
    Deyan
    Dimitri Rakitine wrote:
    If using non-WebLogic threads is an immediate problem, you can try to use
    this hack: http://dima.dhs.org/misc/LongRunningTask.jsp (MyThread class)
    to use WebLogic Execute threads instead of creating your own. (it works
    both on 5.1 and 6.0).
    Deyan D. Bektchiev <[email protected]> wrote:
    This is a multi-part message in MIME format.
    --------------EAB0350757F4EBC4B593EB25
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    Thanks Adam,
    Actually it is true that most of our requests run on non-weblogic threads.
    We have a thread pool that runs in the WLS JVM and it is created by a startup
    class and afterwards is activated by sending JMS messages to a monitoring
    thread that dispatches the requests. The clients connect to a Session EJB and
    that session EJB launches the requests and afterwards the clients get their
    results via JMS.
    We easily support multiple JVMs on one physical server but if it wasn't the
    performance hit from accessing that collection we'd prefer to have as few JVMs
    as possible as this would also drive down the context switches and the total
    number of threads in the system.
    All the Best,
    Deyan
    Adam Messinger wrote:
    Deyan,
    Can you tell us a bit more about your application. That map in
    ResettableThreadLocal shouldn't be hit except for non-WL threads. It is
    unusual that this would be a source of contention.
    That said, I know of many people who have been successful running multiple
    server instances on a single big machine. I think that it is a great
    solution if your application is amenable to it.
    Cheers!
    Adam
    "Deyan D. Bektchiev" <[email protected]> wrote in message
    news:[email protected]...
    Hi,
    Is there a recommended number of Weblogic instances when running on a
    Multi-CPU machine with more than 8, in this particular case - 28.
    The server behaves really bad if I only run one instance there is too
    much time spent in the treads waiting to obtain a lock for accessing a
    SyncronizedMap (in
    webblogic.kernel.ResettableThreadLocal.currentStorage()) and the CPUs
    are underutilized.
    After a few experiments we found out that 1 instance per 4-6 CPUs is OK,
    but I was wondering whether you could recommend something. Also since
    there's limit of 2GB per JVM if we wanted to utilize more then there is
    no choice.
    Thanks,
    Deyan
    --------------EAB0350757F4EBC4B593EB25
    Content-Type: text/x-vcard; charset=us-ascii;
    name="dejan_bektchiev.vcf"
    Content-Transfer-Encoding: 7bit
    Content-Description: Card for Deyan D. Bektchiev
    Content-Disposition: attachment;
    filename="dejan_bektchiev.vcf"
    begin:vcard
    n:Bektchiev;Deyan
    tel;home:1-650-363-6055
    tel;work:1-650-289-1046
    x-mozilla-html:TRUE
    url:http://www.appl.net/
    org:Application Networks
    adr:;;444 Ramona St;Palo Alto;CA;94301;USA
    version:2.1
    email;internet:[email protected]
    fn:Deyan D. Bektchiev
    end:vcard
    --------------EAB0350757F4EBC4B593EB25----
    Dimitri
    --------------67801AC9090398390A36FFEF
    Content-Type: text/x-vcard; charset=us-ascii;
    name="dejan_bektchiev.vcf"
    Content-Transfer-Encoding: 7bit
    Content-Description: Card for Deyan D. Bektchiev
    Content-Disposition: attachment;
    filename="dejan_bektchiev.vcf"
    begin:vcard
    n:Bektchiev;Deyan
    tel;home:1-650-363-6055
    tel;work:1-650-289-1046
    x-mozilla-html:TRUE
    url:http://www.appl.net/
    org:Application Networks
    adr:;;444 Ramona St;Palo Alto;CA;94301;USA
    version:2.1
    email;internet:[email protected]
    fn:Deyan D. Bektchiev
    end:vcard
    --------------67801AC9090398390A36FFEF----
    Dimitri[dejan_bektchiev.vcf]

  • URGENT HELP PLS :  Issue with Multi Level Master Detail block

    This is an issue someone else had posted in this forum few years back but there was no solution mentioned, I have run into this same issue , The problem is as explained below.
    Any help on this is appreciated.
    Scenario:
    There are 3 Blocks in the form : A (Master Block)
    : B (Detail of A )
    : C (Detail of B )
    There is master detail relation created between A and B and B and C. So initially when we query for a record in Master A, it shows all records properly in B and C.
    Now if i navigate to the first record of B , and then second record of B , records corresponding to that record shows up properly in C block.
    Till now everything works fine.
    Issue 1:
    But in case after querying initially on Master Block A,If I go directly to the second record of B block, it clears the whole B block and C block.
    Issue 2:
    Same thing happens if I am on C block ( corresponding to second record of B block) and then navigate to first record in B block , it again clears the whole B block and C block.
    Please Help !!
    Thanks !

    Thanks Xem for Your reply , I tried those settings but it did not help..here is the original link that to the thread that talks about the same problem ,
    Issue with Multi Level Master Detail block
    The last update to this was the following :
    "I figured out that this is happening because Block Status is set to 'Changed' and this is causing it to clear out the blocks.
    But cant figure out why the status is setting to 'Changed' "
    Any Help from the form Gurus on this form in this matter is truely appreicated !!
    Thanks,
    Zid.

  • Performance problem with WPF Viewer CRVS2010

    Hi,
    We are using Crystal Reports 2010 and the new WPF Viewer. Last week when we set up a test machine to run our integration tests (several hundred) all report tests failed (about 30 tests) with a timeout exception.
    The testmachine setup:
    HP DL 580 G5
    WMWare ESXi 4.0
    Guest OS: Windows 7 Enterprise 64-bit
    Memory (guest OS): 3GB
    CPU: 1
    Visual Studio 2010
    Crystal Reports for Visual Studio 2010 with 64 bit runtime installed
    Visual Studio 2008 installed
    Microsoft Office 2010 installed
    Macafee antivirus
    There are about 10 other virtual machines on the same HW.
    I think the performance problem is related to text obejcts on a report document viewed in a WPF Viewer. I made a simple WPF GUI with 2 buttons and the first button executes a very simple report that only has a text object with a few words in it and the other button is also a simple report with only 1 text object with approx. 100 words (about 800 charchters).
    The first report executes and displays almost instantly and the second report executes instantantly but displays after approx. 1 min 30 sec.
    And execute in this context means that all VB.Net code runs in the compiler without any exception or performance problem. The performance problem seems to come after viewer.Show() (in the code below) has executed.
    I did another test on the second report and replaced the text obejct with a formula field with the same text as the text object and this test executed and displayed the report instantly.
    So the performance problem seems to have something to do with rendering of textobjects in the WPF Viewer on a virtual machine with the above setup.
    I've made several tests on local machines with Windows XP (32 bit) or Winows 7 (64 bit) installed and none of them have this performance problem. Its not a critical issue for us because our users will run this application on their local PCs with Windows 7 64-bit but its a bit problematic for our project not being able to run all of our integration tests but I will probably solve this by using a local PC instead.
    Here is the VB.Net code Im using to View the reports:
    Private Sub LightWeight_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
            Dim lightWeightReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
            lightWeightReport.Load(Environment.CurrentDirectory & "\LightWeight.rpt")
            ' Initialize Viewer
            Dim viewer As LF.LIV.PEAAT.Crystal.Views.ReportViewer = New LF.LIV.PEAAT.Crystal.Views.ReportViewer()
            viewer.Owner = Me
            viewer.reportViewer.ViewerCore.ReportSource = lightWeightReport
            viewer.Show()
        End Sub
        Private Sub LightWeightSlow_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
            Dim lightWeightReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
            lightWeightReport.Load(Environment.CurrentDirectory & "\LightWeightSlow.rpt")
            ' Initialize Viewer
            Dim viewer As LF.LIV.PEAAT.Crystal.Views.ReportViewer = New LF.LIV.PEAAT.Crystal.Views.ReportViewer()
            viewer.Owner = Me
            viewer.reportViewer.ViewerCore.ReportSource = lightWeightReport
            viewer.Show()
        End Sub
    The reports are 2 empty default reports with only 1 textobject on the details section.
    // Thomas

    See if the KB [
    [1448013  - Connecting to Oracle database. Error; Failed to load database information|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333433343338333033313333%7D.do] helps.
    Also the following may not hurt to have a look at (if only for ideas):
    [1217021 - Err Msg: "Unable to connect invalid log on parameters" using Oracle in VS .NET|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333233313337333033323331%7D.do]
    [1471508 - Logon error when connecting to Oracle database in a VS .NET application|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333433373331333533303338%7D.do]
    [1196712 - Error: "Failed to load the oci.dll" in ASP.NET application against an Oracle database|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333133393336333733313332%7D.do]
    Ludek
    Follow us on Twitter http://twitter.com/SAPCRNetSup

  • Performance Problems - CPU

    Hi all,
    I'm having some performance problems and i have generated an AWR of a day and i have seen this following things:
    Top 5 Timed Events Avg %Total
    ~~~~~~~~~~~~~~~~~~ wait Call
    Event Waits Time (s) (ms) Time Wait Class
    CPU time 50,318 41.7
    db file sequential read 6,688,472 32,711 5 27.1 User I/O
    Backup: sbtwrite2 1,068,309 7,903 7 6.6 Administra
    db file scattered read 1,012,065 6,999 7 5.8 User I/O
    PX Deq Credit: send blkd 231,401 4,989 22 4.1 Other
    Operating System Statistics DB/Inst: CAPDB14P/capdb14p1 Snaps: 15710-15778
    Statistic Total
    AVG_BUSY_TIME 3,221,704
    AVG_IDLE_TIME 4,923,831
    AVG_IOWAIT_TIME 2,302,776
    AVG_SYS_TIME 537,429
    AVG_USER_TIME 2,682,900
    BUSY_TIME 6,446,121
    IDLE_TIME 9,850,381
    IOWAIT_TIME 4,608,322
    SYS_TIME 1,077,598
    USER_TIME 5,368,523
    LOAD 0
    OS_CPU_WAIT_TIME 1,999,898,469,700
    RSRC_MGR_CPU_WAIT_TIME 0
    VM_IN_BYTES 12,201,893,888
    VM_OUT_BYTES 476,655,616
    PHYSICAL_MEMORY_BYTES 8,568,512,512
    NUM_CPUS 2
    NUM_CPU_SOCKETS 2
    ###########################3
    I think that we are having CPU problems here !!
    All my memory caches are good, 99% hit.
    Anybody agree with me???
    Tks,
    Paulo

    I have problems on some queries that have another wait event related to RAC.
    "gc cs multi block request" is taking a lot of time on some queries. These queries run very fast at another databas that isn't a RAC database.
    Example:
    1-Tables has the same number of rows!!!!!
    2-Both tables and indexes are analyzed using the same tool (DBMA_STATS)
    ####RAC DATABASE####
    SELECT 1 from dual
    WHERE NOT EXISTS (SELECT 1
    FROM mensalidade a
    WHERE data_vencimento >= CHAR_TO_DATE('20070201'));
    ----Explain
    SELECT STATEMENT, GOAL = ALL_ROWS               4     1     
    FILTER                         
    FAST DUAL               2     1     
    PX COORDINATOR FORCED SERIAL                         
    PX SEND QC (RANDOM)     SYS     :TQ10000     2     1     7
    PX BLOCK ITERATOR               2     1     7
    INDEX FAST FULL SCAN     BRCAPDB2     IMENSALIDADE1     2     1     7
    ----It takes more than 500 seconds to run
    ####STANDALONE DATABASE####
    SELECT 1 from dual
    WHERE NOT EXISTS (SELECT 1
    FROM mensalidade a
    WHERE data_vencimento >= CHAR_TO_DATE('20070201'));
    ----Explain
    SELECT STATEMENT, GOAL = ALL_ROWS               4     1     
    FILTER                         
    FAST DUAL               2     1     
    PX COORDINATOR FORCED SERIAL                         
    PX SEND QC (RANDOM)     SYS     :TQ10000     2     2     16
    PX BLOCK ITERATOR               2     2     16
    TABLE ACCESS FULL     BRCAPDB2     MENSALIDADE     2     2     16
    ----It takes 0.1 seconds to run

  • SIGBUS with -Xincgx/-Xconcgc for JDK 1.5 on multi-CPU system

    Hi,
    I've been having trouble with random crashes using 1.5.0_03 up to _07 on Solaris and Linux (x86), especially on multi-CPU hosts. This is for a Web server (Tomcat 4.1.x), where CMS has been wonderful in avoiding the sometimes-horrible (multi-minute) GC pauses that I otherwise saw inspite of paranoid care with memory (and other resource use) in my code.
    I have sent in a few crash dumps via a variety of routes but none have so far surfaced in the public bug reports.
    I suspect something like a missing memory barrier or 3 in the CMS code, as I have commented against one of the extant bug reports.
    I have had to stop using -Xincgc/-Xconcgc on a 2-CPU machine, but as I have a T1000 due for delivery within the next week, I really do not want end up using a stop-the-world GC to avoid the JVM crashing!
    Are any SIGBUS-type problems fixed in _08 or _09?
    Rgds
    Damon

    We have found, and are in the process of fixing, at least two
    long-standing bugs in the concurrent collector that may have
    affected you. (But the latter is conjecture.)
    Those bugs are still present in the public beta version of Mustang.
    So, if you are able to reproduce the crashes with Mustang,
    then please contact us at hotspotgc dash feedback at sun dot com
    so we can have you test the fixes we have made, as well
    as, if possible, get your test case so we can use it to test
    the parallel/concurrent collector more thoroughly.
    Refer to CR 6429181 and CR 6431128, and include a pointer
    to this thread. At least two of the fixes we have in mind are, however,
    orthogonal to the use of ParNew, and should exhibit even
    if you turn off UseParNewGC.
    By the way, a full complement of support options is available
    at: developer.sun.com/services

  • Performance problem with synchronized singleton

    I'm using the singleton pattern to cache incoming JMS Message data from a 3rd party. I'm seeing terrible performance though, and I think it's because I've misunderstood something.
    My singleton class stores incoming JMS messages in a HashMap, so that successive messages can be checked to see if they are a new piece of data, or an update to an earlier one.
    I followed the traditional examples of a private constructor and a public getInstance method, and applied the double-checked locking to the latter. However, a colleague then suggested that all my other methods in the same class should also be synchronized - is this the case or am I creating an unnecessary performance bottleneck? Or have I unwittingly created that bottleneck elsewhere?
    package com.mycode;
    import java.util.HashMap;
    import java.util.Iterator;
    public class DataCache {
        private volatile static DataCache uniqueInstance;
        private HashMap<String, DataCacheElement> dataCache;
        private DataCache() {
            if (dataCache == null) {
                dataCache = new HashMap<String, DataCacheElement>();
        public static DataCache getInstance() {
             if (uniqueInstance == null) {
                synchronized  (DataCache.class) {
                    if (uniqueInstance == null) {
                        uniqueInstance = new DataCache();
            return uniqueInstance;
        public synchronized void put(String uniqueID, DataCacheElement dataCacheElement) {
            dataCache.put(uniqueID, dataCacheElement);
        public synchronized DataCacheElement get(String uniqueID) {
            DataCacheElement dataCacheElement = (DataCacheElement) dataCache.get(uniqueID);
            return dataCacheElement;
        public synchronized void remove(String uniqueID) {
            dataCache.remove(uniqueID);
        public synchronized int getCacheSize() {
         return dataCache.keySet().size();
         * Flushes all objects from the cache that are older than the
         * expiry time.
         * @param expiryTime (long milliseconds)
        public synchronized void flush(long expiryTime) {
            String uniqueID;
            long currentDate = System.currentTimeMillis();
            long compareDate = currentDate - (expiryTime);
            Iterator<String> iterator = dataCache.keySet().iterator();
            while( iterator.hasNext() ){
                // Get element by unique key
                uniqueID = (String) iterator.next();
                DataCacheElement dataCacheElement = (DataCacheElement) get(uniqueID);
                // get time from element
                long lastUpdatedDate = dataCacheElement.getUpdatedDate();
                // if time is greater than 1 day, remove element from cache
                if (lastUpdatedDate <  compareDate) {
                    remove(uniqueID);
        public synchronized void empty() {
            dataCache.clear();
    }

    m0thr4 wrote:
    SunFred wrote:
    m0thr4 wrote:
    I [...] applied the double-checked locking
    Which is broken. http://www.ibm.com/developerworks/java/library/j-dcl.html
    from the link:
    The theory behind double-checked locking is perfect. Unfortunately, reality is entirely different. The problem with double-checked locking is that there is no guarantee it will work on single or multi-processor machines.
    The issue of the failure of double-checked locking is not due to implementation bugs in JVMs but to the current Java platform memory model. The memory model allows what is known as "out-of-order writes" and is a prime reason why this idiom fails[b].
    I had a read of that article and have a couple of questions about it:
    1. The article was written way back in May 2002 - is the issue they describe relevant to Java 6's memory model? DCL will work starting with 1.4 or 1.5, if you make the variable you're testing volatile. However, there's no reason to do it.
    Lazy instantiation is almost never appropriate, and for those rare times when it is, use a nested class to hold your instance reference. (There are examples if you search for them.) I'd be willing to be lazy instantiation is no appropriate in your case, so you don't need to muck with syncing or DCL or any of that nonsense.

Maybe you are looking for

  • Nano isn't recognised by Windows XP on US, 2 other ipods in family are.

    Recently replaced under warrantee, 4 Gig Nano isn't seen by Windows or Itunes. I've tried Itunes diagnostics help, none of it solved the issue, also the rest of the apple online help stuff. The strange thing is my wifes nano (brought 6 months ago) an

  • Loss of color

    Capturing with AuroraIgniterX lossed color - gray scale only. Swapped Aurora card, cables - tried both composite and S-video - dropped preferences, re-installed Final Cut Pro - no help. Will capture color in DV format, but not analog.

  • Any iMac 24-inch horror stories or is it all good so far?

    Hi all, I've been looking around these forums for a while, as I've been updating my iMac. I had a G5 1.9GHz with iSight cam which I got in December last year (just a few weeks before Apple released the Core Duo version, I was very miffed), and decide

  • Illustrator issues questions--I need help

    Illustrator CS4, MAC OSX 10.5.8... After struggling off and on for a few months with Illustrator, I'd like to be able to confirm a few things, so I know I'm not insane. 1. Canvas/Pasteboard. Is there not an easy way to change that a bit so I can see

  • Is it possible to drop markers WHILE you're recording?

    I'm a voiceover, and I'd like to replicate a feature I hear about in ProTools. I use the "Add to Marker List" (F8)  function all the time during playback.  I'd like to be able to drop markers while I'm actually recording, but I don't know if I can, o