Project

General

Profile

Actions

Emulator Issues #1085

closed

Sychronization taking a lot of time in profile

Added by magumagu9 over 15 years ago.

Status:
Invalid
Priority:
Normal
Assignee:
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:

Description

Top of an oprofile run for the Animal Crossing title screen:

109108 15.7371 fglrx_dri.so fglrx_dri.so /usr/lib/dri/fglrx_dri.so
101322 14.6141 no-vmlinux no-vmlinux /no-vmlinux
47874 6.9050 libpthread-2.8.90.so libpthread-2.8.90.so pthread_mutex_lock
41144 5.9344 libpthread-2.8.90.so libpthread-2.8.90.so
__pthread_mutex_unlock_usercnt
22604 3.2603 libPlugin_VideoOGL.so libPlugin_VideoOGL.so
Fifo_EnterLoop(SVideoInitialize const&)
19646 2.8336 libc-2.8.90.so libc-2.8.90.so memcpy
12547 1.8097 libpulsecore.so.5.0.1 libpulsecore.so.5.0.1 /usr/lib/libpulsecore.so.5.0.1
12481 1.8002 libPlugin_VideoOGL.so libPlugin_VideoOGL.so
Common::CriticalSection::Leave()
11860 1.7106 libPlugin_VideoOGL.so libPlugin_VideoOGL.so
Common::CriticalSection::Enter()
10557 1.5227 Dolphin Dolphin Interpreter::psq_l(UGeckoInstruction)
7498 1.0815 Dolphin Dolphin MemChecks::GetMemCheck(unsigned
int)
6722 0.9695 Dolphin Dolphin void
Memory::WriteToHardware<unsigned int>(unsigned int, unsigned int, unsigned int,
Memory::XCheckTLBFlag)
6315 0.9108 Dolphin Dolphin
CommandProcessor::GatherPipeBursted()
6014 0.8674 Dolphin Dolphin Memory::Write_U32(unsigned int,
unsigned int)
5636 0.8129 libPlugin_VideoOGL.so libPlugin_VideoOGL.so __i686.get_pc_thunk.bx
4628 0.6675 Dolphin Dolphin GPFifo::Write32(unsigned int,
unsigned int)
4544 0.6554 libpixman-1.so.0.12.0 libpixman-1.so.0.12.0
/usr/lib/libpixman-1.so.0.12.0
4056 0.5850 libpulse.so.0.4.1 libpulse.so.0.4.1 /usr/lib/libpulse.so.0.4.1
3896 0.5619 libPlugin_VideoOGL.so libPlugin_VideoOGL.so
Common::SyncInterlockedExchange(int*, int)

We're spending a lot of time acquiring locks, which isn't good. Relevant functions:
pthread_mutex_lock, __pthread_mutex_unlock_usercnt, CriticalSection::Enter,
CriticalSection::Leave, Common::SyncInterlockedExchange. Over 15% of the samples are in
locking functions. (The screen in question runs at approximately 40/60fps on my computer.)

Actions

Also available in: Atom PDF