Hello all,

I have a heavily multithreaded application which runs under MacOS X and Linux. 
Under linux we use gnustep-base and libobjc2 (its a server app with no GUI). 
The application is completely written with automatic reference counting (ARC). 
Under heavy load under Linux we now noticed that we are very often sitting in 
locks triggered by ARC releasing objects in memory it doesn't need anymore. 
Usually my code is at a }  and libobjc2 waits on some global lock on freeing 
objects while other threads sit on a init or alloc call or also on a ARC 
release.

There is nothing generally wrong with this but the performance is impacted. 99% 
of the objects which get released with ARC that way are being created in the 
same thread which means no lock would be needed. Only when an object was 
created or held by another thread, things should be done more carefully. I 
believe this could speed things up a lot.

There is obviously a few things in libobjc2 which need better maintenance.
For example we always have to remove a debug log output related to a dtrace 
release which otherwise would spam our stdout as its being constantly called.

Is there anyone on this list who would like to join our efforts in this area or 
has some feedback on this subject? We have not touched libobjc2 code part until 
now but its essentially our performance bottleneck now.


Andreas Fink
------------------------------------------------------------------
Fink Telecom Services, Paradieshofstrasse 101, 4054 Basel, Switzerland
E-Mail: andr...@fink.org https://www.fink.org
Mobile: +41-78-6677333
Skype: andreasfink    Jabber/XMPP: andr...@fink.org ICQ: 8239353
------------------------------------------------------------------





_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustep@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to