|
From: | Andreas Fink |
Subject: | libobjc2 & arc & multithreading |
Date: | Mon, 27 Nov 2017 07:56:59 +0100 |
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 Mobile: +41-78-6677333 Skype: andreasfink Jabber/XMPP: andreas@fink.org ICQ: 8239353 ------------------------------------------------------------------ |
[Prev in Thread] | Current Thread | [Next in Thread] |