# HG changeset patch # User drewp@bigasterisk.com # Date 2022-05-10 06:18:05 # Node ID 67575505c400e3a5174082260511ca0aefdb6357 # Parent 8849c9e5da3089cf0abede275bd4ff0fbf447b36 comment out more greplin so services can start diff --git a/bin/effectsequencer b/bin/effectsequencer --- a/bin/effectsequencer +++ b/bin/effectsequencer @@ -5,10 +5,10 @@ plays back effect notes from the timelin from run_local import log from twisted.internet import reactor -from greplin.scales.cyclonehandler import StatsHandler +# from greplin.scales.cyclonehandler import StatsHandler from rdfdb.syncedgraph import SyncedGraph from light9 import networking, showconfig -from greplin import scales +# from greplin import scales import optparse, sys, logging import cyclone.web from rdflib import URIRef @@ -27,14 +27,14 @@ class App(object): self.graph = SyncedGraph(networking.rdfdb.url, "effectSequencer") self.graph.initiallySynced.addCallback(self.launch) - self.stats = scales.collection( - '/', - scales.PmfStat('sendLevels', recalcPeriod=1), - scales.PmfStat('getMusic', recalcPeriod=1), - scales.PmfStat('evals', recalcPeriod=1), - scales.PmfStat('sendOutput', recalcPeriod=1), - scales.IntStat('errors'), - ) + # self.stats = scales.collection( + # '/', + # scales.PmfStat('sendLevels', recalcPeriod=1), + # scales.PmfStat('getMusic', recalcPeriod=1), + # scales.PmfStat('evals', recalcPeriod=1), + # scales.PmfStat('sendOutput', recalcPeriod=1), + # scales.IntStat('errors'), + # ) def launch(self, *args): self.seq = Sequencer( @@ -54,14 +54,15 @@ class App(object): "default_filename": "sequencer.html" }), (r'/updates', Updates), - (r'/stats/(.*)', StatsHandler, { - 'serverName': 'effectsequencer' - }), + # (r'/stats/(.*)', StatsHandler, { + # 'serverName': 'effectsequencer' + # }), ], debug=True, seq=self.seq, graph=self.graph, - stats=self.stats) + # stats=self.stats + ) reactor.listenTCP(networking.effectSequencer.port, self.cycloneApp) log.info("listening on %s" % networking.effectSequencer.port) diff --git a/bin/vidref b/bin/vidref --- a/bin/vidref +++ b/bin/vidref @@ -19,8 +19,8 @@ from run_local import log from typing import cast import logging, optparse, json, base64, os, glob -from greplin import scales -from greplin.scales.cyclonehandler import StatsHandler +# from greplin import scales +# from greplin.scales.cyclonehandler import StatsHandler from rdflib import URIRef from twisted.internet import reactor, defer import cyclone.web, cyclone.httpclient, cyclone.websocket @@ -30,7 +30,7 @@ from light9 import networking, showconfi from light9.newtypes import Song from light9.vidref import videorecorder from rdfdb.syncedgraph import SyncedGraph -from standardservice.scalessetup import gatherProcessStats +# from standardservice.scalessetup import gatherProcessStats parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", help="logging.DEBUG") @@ -38,12 +38,12 @@ parser.add_option("-v", "--verbose", act log.setLevel(logging.DEBUG if options.verbose else logging.INFO) -gatherProcessStats() -stats = scales.collection( - '/webServer', - scales.RecentFpsStat('liveWebsocketFrameFps'), - scales.IntStat('liveClients'), -) +# gatherProcessStats() +# stats = scales.collection( +# '/webServer', +# scales.RecentFpsStat('liveWebsocketFrameFps'), +# scales.IntStat('liveClients'), +# ) class Snapshot(cyclone.web.RequestHandler): @@ -78,16 +78,17 @@ class Live(cyclone.websocket.WebSocketHa def connectionMade(self, *args, **kwargs): pipeline.liveImages.subscribe(on_next=self.onFrame) - stats.liveClients += 1 + # stats.liveClients += 1 def connectionLost(self, reason): #self.subj.dispose() - stats.liveClients -= 1 + # stats.liveClients -= 1 + pass def onFrame(self, cf: videorecorder.CaptureFrame): if cf is None: return - stats.liveWebsocketFrameFps.mark() + # stats.liveWebsocketFrameFps.mark() self.sendMessage( json.dumps({ @@ -188,9 +189,9 @@ reactor.listenTCP( }), (r'/time', Time), (r'/time/stream', TimeStream), - (r'/stats/(.*)', StatsHandler, { - 'serverName': 'vidref' - }), + # (r'/stats/(.*)', StatsHandler, { + # 'serverName': 'vidref' + # }), ], debug=True, )) diff --git a/light9/collector/collector_client.py b/light9/collector/collector_client.py --- a/light9/collector/collector_client.py +++ b/light9/collector/collector_client.py @@ -4,16 +4,16 @@ from twisted.internet import defer from txzmq import ZmqEndpoint, ZmqFactory, ZmqPushConnection import json, time, logging import treq -from greplin import scales +# from greplin import scales log = logging.getLogger('coll_client') _zmqClient = None -stats = scales.collection( - '/collectorClient', - scales.PmfStat('send', recalcPeriod=1), -) +# stats = scales.collection( +# '/collectorClient', +# scales.PmfStat('send', recalcPeriod=1), +# ) class TwistedZmqClient(object): @@ -58,7 +58,7 @@ def sendToCollector(client, session, set def onDone(result): dt = time.time() - sendTime - stats.send = dt + # stats.send = dt if dt > .1: log.warn('sendToCollector request took %.1fms', dt * 1000) return dt diff --git a/light9/effect/sequencer.py b/light9/effect/sequencer.py --- a/light9/effect/sequencer.py +++ b/light9/effect/sequencer.py @@ -22,30 +22,30 @@ from light9.effect.simple_outputs import from light9.namespaces import L9, RDF from light9.newtypes import DeviceUri, DeviceAttr, NoteUri, Curve, Song from rdfdb.syncedgraph import SyncedGraph -from standardservice.scalessetup import gatherProcessStats +# from standardservice.scalessetup import gatherProcessStats -from greplin import scales +# from greplin import scales import imp log = logging.getLogger('sequencer') -gatherProcessStats() -updateStats = scales.collection( - '/update', - scales.PmfStat('s0_getMusic', recalcPeriod=1), - scales.PmfStat('s1_eval', recalcPeriod=1), - #scales.PmfStat('s3_send_client', recalcPeriod=1), - scales.PmfStat('s3_send', recalcPeriod=1), - scales.PmfStat('updateLoopLatency', recalcPeriod=1), - scales.DoubleStat('updateLoopLatencyGoal'), - scales.RecentFpsStat('updateFps'), - scales.DoubleStat('goalFps'), -) -compileStats = scales.collection( - '/compile', - scales.PmfStat('graph', recalcPeriod=1), - scales.PmfStat('song', recalcPeriod=1), -) +# gatherProcessStats() +# updateStats = scales.collection( +# '/update', +# scales.PmfStat('s0_getMusic', recalcPeriod=1), +# scales.PmfStat('s1_eval', recalcPeriod=1), +# #scales.PmfStat('s3_send_client', recalcPeriod=1), +# scales.PmfStat('s3_send', recalcPeriod=1), +# scales.PmfStat('updateLoopLatency', recalcPeriod=1), +# scales.DoubleStat('updateLoopLatencyGoal'), +# scales.RecentFpsStat('updateFps'), +# scales.DoubleStat('goalFps'), +# ) +# compileStats = scales.collection( +# '/compile', +# scales.PmfStat('graph', recalcPeriod=1), +# scales.PmfStat('song', recalcPeriod=1), +# ) def pyType(n): @@ -171,8 +171,8 @@ class Sequencer(object): fps=40): self.graph = graph self.fps = fps - updateStats.goalFps = self.fps - updateStats.updateLoopLatencyGoal = 1 / self.fps + # updateStats.goalFps = self.fps + # updateStats.updateLoopLatencyGoal = 1 / self.fps self.sendToCollector = sendToCollector self.music = MusicTime(period=.2, pollCurvecalc=False) @@ -192,7 +192,7 @@ class Sequencer(object): self.graph.addHandler(self.compileGraph) #self.updateLoop() - @compileStats.graph.time() + # @compileStats.graph.time() def compileGraph(self) -> None: """rebuild our data from the graph""" for song in self.graph.subjects(RDF.type, L9['Song']): @@ -202,7 +202,7 @@ class Sequencer(object): self.graph.addHandler(compileSong) - @compileStats.song.time() + # @compileStats.song.time() def compileSong(self, song: Song) -> None: anyErrors = False self.notes[song] = [] @@ -230,7 +230,7 @@ class Sequencer(object): reactor.callLater(1, self.updateLoop) else: took = time.time() - frameStart - updateStats.updateLoopLatency = took + # updateStats.updateLoopLatency = took if not self.lastLoopSucceeded: log.info('Sequencer.update is working') @@ -239,11 +239,11 @@ class Sequencer(object): delay = max(0, 1 / self.fps - took) reactor.callLater(delay, self.updateLoop) - @updateStats.updateFps.rate() + # @updateStats.updateFps.rate() @inlineCallbacks def update(self) -> Deferred: - with updateStats.s0_getMusic.time(): + if 1:#with updateStats.s0_getMusic.time(): musicState = self.music.getLatest() if not musicState.get('song') or not isinstance( musicState.get('t'), float): @@ -255,7 +255,7 @@ class Sequencer(object): 't': musicState['t'] }) - with updateStats.s1_eval.time(): + if 1:#with updateStats.s1_eval.time(): settings = [] songNotes = sorted(self.notes.get(song, []), key=lambda n: n.uri) noteReports = [] @@ -271,7 +271,7 @@ class Sequencer(object): dispatcher.send('state', update={'songNotes': noteReports}) - with updateStats.s3_send.time(): # our measurement + if 1:#with updateStats.s3_send.time(): # our measurement sendSecs = yield self.sendToCollector(devSettings) # sendToCollector's own measurement. diff --git a/light9/vidref/videorecorder.py b/light9/vidref/videorecorder.py --- a/light9/vidref/videorecorder.py +++ b/light9/vidref/videorecorder.py @@ -8,7 +8,7 @@ gi.require_version('Gst', '1.0') gi.require_version('GstBase', '1.0') from gi.repository import Gst -from greplin import scales +# from greplin import scales from rdflib import URIRef from rx.subject import BehaviorSubject from twisted.internet import threads @@ -22,15 +22,15 @@ from light9.newtypes import Song log = logging.getLogger() -stats = scales.collection( - '/recorder', - scales.PmfStat('jpegEncode', recalcPeriod=1), - scales.IntStat('deletes'), - scales.PmfStat('waitForNextImg', recalcPeriod=1), - scales.PmfStat('crop', recalcPeriod=1), - scales.RecentFpsStat('encodeFrameFps'), - scales.RecentFpsStat('queueGstFrameFps'), -) +# stats = scales.collection( +# '/recorder', +# scales.PmfStat('jpegEncode', recalcPeriod=1), +# scales.IntStat('deletes'), +# scales.PmfStat('waitForNextImg', recalcPeriod=1), +# scales.PmfStat('crop', recalcPeriod=1), +# scales.RecentFpsStat('encodeFrameFps'), +# scales.RecentFpsStat('queueGstFrameFps'), +# ) @dataclass @@ -41,7 +41,7 @@ class CaptureFrame: isPlaying: bool imgJpeg: Optional[bytes] = None - @stats.jpegEncode.time() + # @stats.jpegEncode.time() def asJpeg(self): if not self.imgJpeg: output = BytesIO() @@ -73,7 +73,7 @@ def deleteClip(uri: URIRef): w[3] ]) log.info(f'deleting {uri} {path}') - stats.deletes += 1 + # stats.deletes += 1 for fn in [path + '.mp4', path + '.timing']: os.remove(fn) @@ -173,7 +173,7 @@ class FramesToVideoFiles: deleteClip(takeUri(self.outMp4.encode('ascii'))) def _bg_make_frame(self, video_time_secs): - stats.encodeFrameFps.mark() + # stats.encodeFrameFps.mark() if self.nextWriteAction == 'close': raise StopIteration # the one in write_videofile elif self.nextWriteAction == 'notWritingClip': @@ -187,7 +187,7 @@ class FramesToVideoFiles: t1 = time.time() while self.nextImg is None: time.sleep(.015) - stats.waitForNextImg = time.time() - t1 + # stats.waitForNextImg = time.time() - t1 cf, self.nextImg = self.nextImg, None self.frameMap.write(f'video {video_time_secs:g} = song {cf.t:g}\n') @@ -248,7 +248,7 @@ class GstSource: # could get gst's frame time and pass it to getLatest latest = self.musicTime.getLatest() if 'song' in latest: - stats.queueGstFrameFps.mark() + # stats.queueGstFrameFps.mark() self.liveImages.on_next( CaptureFrame(img=img, song=Song(latest['song']), @@ -258,7 +258,7 @@ class GstSource: traceback.print_exc() return Gst.FlowReturn.OK - @stats.crop.time() + # @stats.crop.time() def crop(self, img): return img.crop((40, 100, 790, 310))