[users at bb.net] buildbot CPU usage
Pierre Tardy
tardyp at gmail.com
Wed Aug 10 21:18:26 UTC 2016
Hi,
After carefully looking at your code, it does not look to have obvious
performance flaw.
I think it would have been cheaper for you to just use the forcescheduler
REST api, but if that code works for you this is totally fine.
I saw that you did not manage to get sample in your prod as well, so I did
look at my code again, and now I am able to see the samples.
statprof does not like to stop before start
Please try again with this code:
import statprof
from twisted.application.internet import TimerService
from buildbot.util.service import BuildbotService
class BuildbotTimerService(TimerService, BuildbotService):
name = "timer"
def __init__(self):
BuildbotService.__init__(self)
TimerService.__init__(self, 10, self.dump_stats)
self.started = False
def dump_stats(self):
if not self.started:
statprof.start()
self.started = True
return
statprof.stop()
with open("profile.txt", "w") as f:
statprof.display(f)
statprof.display()
statprof.start()
c['services'] = [ BuildbotTimerService() ]
Le mer. 10 août 2016 à 14:14, Francesco Di Mizio <francescodimizio at gmail.com>
a écrit :
> Many thanks. Find it attached.
>
> It's a tiny http server. People use a web page to send an HTTP request to
> it to kick off builds.
>
>
> On Wed, Aug 10, 2016 at 1:55 PM, Pierre Tardy <tardyp at gmail.com> wrote:
>
>> I'll take a look.
>>
>> Le mer. 10 août 2016 12:45, Francesco Di Mizio <
>> francescodimizio at gmail.com> a écrit :
>>
>>> I am starting to think it may be due to my own custom scheduler. If I
>>> uploaded the code somewhere could anybody take a look? it's a 150 lines py
>>> script.
>>>
>>> On Wed, Aug 10, 2016 at 12:10 PM, Francesco Di Mizio <
>>> francescodimizio at gmail.com> wrote:
>>>
>>>> Thanks for that Pierre. I have it on on production and the performances
>>>> do not degrade indeed.
>>>>
>>>> buildbot at e2123a50d1fb:~$ cat profile.txt
>>>> No samples recorded.
>>>>
>>>> I need to study statprof a bit now ;)
>>>>
>>>> On Wed, Aug 10, 2016 at 11:20 AM, Vasily <vassnlit at gmail.com> wrote:
>>>>
>>>>> One can also use Intel® VTune™, you know... :-)
>>>>>
>>>>> Thanks,
>>>>> Vasily
>>>>> 09 авг. 2016 г. 23:56 пользователь "Pierre Tardy" <tardyp at gmail.com>
>>>>> написал:
>>>>>
>>>>>> You can add following snippet to your master.cfg. It looks statprof
>>>>>> does not work on osx, so I cannot test it to the end, but I know similar
>>>>>> did work on my prod
>>>>>>
>>>>>>
>>>>>> import statprof
>>>>>> from twisted.application.internet import TimerService
>>>>>> from buildbot.util.service import BuildbotService
>>>>>> class BuildbotTimerService(TimerService, BuildbotService):
>>>>>> name = "timer"
>>>>>> def __init__(self):
>>>>>> BuildbotService.__init__(self)
>>>>>> TimerService.__init__(self, 10, self.dump_stats)
>>>>>> def dump_stats(self):
>>>>>> statprof.stop()
>>>>>> with open("profile.txt", "w") as f:
>>>>>> statprof.display(f)
>>>>>> statprof.start()
>>>>>>
>>>>>> c['services'] = [ BuildbotTimerService() ]
>>>>>>
>>>>>>
>>>>>> Le mar. 9 août 2016 à 21:44, Francesco Di Mizio <
>>>>>> francescodimizio at gmail.com> a écrit :
>>>>>>
>>>>>>> Pierre,
>>>>>>>
>>>>>>> if you can enlighten on how you intend to use statprof, I will be
>>>>>>> happy to give it a try.
>>>>>>> This problem here is on top of my list right now as it's making my
>>>>>>> prod env unusable.
>>>>>>>
>>>>>>> On Tue, Aug 9, 2016 at 8:25 PM, Pierre Tardy <tardyp at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Please note that cprofile is very intrusive and will lead to about
>>>>>>>> 3x slower code.
>>>>>>>>
>>>>>>>> So I would not run that in prod. This is why I prefer statprof
>>>>>>>> which is using a non intrusive method to get the stats
>>>>>>>>
>>>>>>>> Le mar. 9 août 2016 19:15, Francesco Di Mizio <
>>>>>>>> francescodimizio at gmail.com> a écrit :
>>>>>>>>
>>>>>>>>> On a side note I have managed to get twistd to dump a blob I can
>>>>>>>>> then load and analyze. Got to see if I can run this in production.
>>>>>>>>> If anybody is curious the following worked for me:
>>>>>>>>> twistd --savestats -n --profiler=cprofile --profile=/crcdata/
>>>>>>>>> profile.stats -y ./buildbot.tac
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Aug 9, 2016 at 5:21 PM, Francesco Di Mizio <
>>>>>>>>> francescodimizio at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Well that's expected to an extent - p4 poller is running 'p4
>>>>>>>>>> changes' every pollinterval seconds.
>>>>>>>>>>
>>>>>>>>>> Anyway just as a test I've tried to disable the poller and still
>>>>>>>>>> at times I am seeing the CPU spiking up to above 100%. I believe I really
>>>>>>>>>> need to profile this somehow.
>>>>>>>>>>
>>>>>>>>>> On Tue, Aug 9, 2016 at 5:08 PM, Dan Kegel <dank at kegel.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Also watch 'top' and see if poller processes are hogging
>>>>>>>>>>> resources.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> users mailing list
>>>>>> users at buildbot.net
>>>>>> https://lists.buildbot.net/mailman/listinfo/users
>>>>>>
>>>>>
>>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.buildbot.net/pipermail/users/attachments/20160810/fc70e9fb/attachment.html>
More information about the users
mailing list