diff --git a/src/monitor.py b/src/monitor.py index c973d2d..90337a6 100755 --- a/src/monitor.py +++ b/src/monitor.py @@ -16,6 +16,8 @@ from threading import Thread, RLock import time import numpy as np from utils.ml import ML +import sys + class Analysis: def __init__(self): self.logs = [] @@ -155,12 +157,14 @@ class ProcessCounter(Analysis): #n = sum(r) #return n/N return dict(self.getNow(),**r) + """ This class returns an application's both memory and cpu usage """ class DetailProcess(Analysis): def __init__(self): Analysis.__init__(self) + def init (self,names): #Analysis.init(self) self.names = names; @@ -176,42 +180,50 @@ class DetailProcess(Analysis): return '' def reboot(self,rows,conf=None) : return np.sum([int(item['label']=='crash') for item in rows]) > 0 - def evaluate(self,name) : - cmd = "ps -eo pmem,pcpu,vsize,command|grep -E \":app\"" - handler = subprocess.Popen(cmd.replace(":app",name),shell=True,stdout=subprocess.PIPE) - ostream = handler.communicate()[0].split('\n') - #xstr = ostream - ostream = [ self.split(name,row) for row in ostream if row != '' and 'grep' not in row] - if len(ostream) == 0 or len(ostream[0]) < 4 : - ostream = [['0','0','0','0',name]] - r = [] - for row in ostream : - # - # Though the comm should only return the name as specified, - # On OSX it has been observed that the fully qualified path is sometimes returned (go figure) - # - row = [float(value) for value in row if value.strip() != '' and name not in value ] +[re.sub('\$|^','',name)] - r.append(row) + def parse(self,row,fields): + """ + The last field should be the command in its integrity + @pre len(fields) > len(row) + """ + r = {} + + now = self.getNow() + r['date'] = now + row = [term for term in row.split() if term.strip() != ''] + for name in fields : + index = fields.index(name) + + r[name] = row[index] if row else 0 + if name not in ['user','cmd','status','pid'] : + r[name] = float(r[name]) + r[name] = row[index: ] if row else [] # - # At this point we should aggregate results - # The aggregation is intended for applications with several processes (e.g: apache2) + # Let's set the status give the data extracted # - if len(r) > 1: - m = None - for row in r: - if m is None: - m = row - else: - m[3] += row[3] - m[0] += row[0] - m[1] += row[1] - m[2] += row[2] - m[0] = round((m[0] / m[3]),2) - m[1] = round((m[1] / m[3]),2) - m[2] = round((m[2] / m[3]),2) - - r = [m] + if r['status'] == 0 : + r['status'] = 'crash' + elif 'Z' in r['status'] : + r['status'] = 'zombie' + elif r['memory_usage'] > 0 and r['cpu_usage'] > 0: + r['status'] = 'running' + else: + r['status'] = 'idle' return r + + def evaluate(self,name=None) : + if name is None : + name = ".*" + fields = ["user","pid","memory_usage","cpu_usage","memory_available","status","cmd"] + cmd = "ps -eo user,pid,pmem,pcpu,vsize,stat,command|grep -Ei \":app\"".replace(":app",name) + handler = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE) + logs = handler.communicate()[0].split('\n') + logs = [row for row in logs if (row.strip() != '') and ('grep -Ei' in row )== False ] + + if len(logs) == 0: + return [dict(self.parse('',fields),**{'label':name}) ] + else : + return [dict(self.parse(row,fields),**{'label':name}) for row in logs if row.strip() != '' and 'grep' not in row and '-Ei' not in row] + def status(self,row): x = row['memory_usage'] y = row['cpu_usage'] @@ -222,20 +234,17 @@ class DetailProcess(Analysis): return "idle" else: return "crash" - def format(self,row): - r= {"memory_usage":row[0],"cpu_usage":row[1],"memory_available":row[2]/1000,"proc_count":row[3],"label":self.cleanup(row[4])} - status = self.status(r) - r['status'] = status - return r + #def format(self,row): + # r= {"memory_usage":row[0],"cpu_usage":row[1],"memory_available":row[2]/1000,"proc_count":row[3],"label":self.cleanup(row[4])} + # status = self.status(r) + # r['status'] = status + # return r def composite(self): ma = [] - now = self.getNow() for name in self.names: - - matrix = self.evaluate(name) - - ma += [ dict(now, **self.format(row)) for row in matrix] + row = self.evaluate(name) + ma += row return ma """ @@ -246,6 +255,7 @@ class FileWatch(Analysis): def __init__(self): pass def init(self,folders): + print folders self.folders = folders; def getName(self): return "folders" @@ -283,15 +293,30 @@ class FileWatch(Analysis): return {"size":size,"age":age} return None + def evaluate(self,dir_path): + for child in os.listdir(dir_path): + path = os.path.join(dir_path, child) + if os.path.isdir(path): + print("FOLDER: " + "\t" + path) + self.evaluate(path) + + else: + size = os.path.getsize(path) + date = os.path.getctime(path) + date = datetime.datetime.fromtimestamp(z).strftime('{"year":%Y,"month":%m,"day":%d,"hour":%H,"min":%M}') + print("FILE: " + "\t" + path) - def evaluate(self,path): + def __evaluate(self,path): cmd = "find :path -print0|xargs -0 ls -ls |awk '{print $6,$7,$8,$9,$10}'".replace(":path",path) - handler = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE) ostream = handler.communicate()[0].split('\n') - + ostream = [row for row in ostream if row.strip() != ''] + print cmd + print ostream[0] + print ostream[1] #return [self.split(stream) for stream in ostream if stream.strip() != '' and '.DS_Store' not in stream and 'total' not in stream] - return [self.split(stream) for stream in ostream if path not in stream and not set(['','total','.DS_Store']) & set(stream.split(' '))] + #return [self.split(stream) for stream in ostream if path not in stream and not set(['','total','.DS_Store']) & set(stream.split(' '))] + return [] def toMB(self,size): m = {'GB':1000,'TB':1000000} v,u = size.split(' ') diff --git a/test/.TestServerMonitor.py.swp b/test/.TestServerMonitor.py.swp new file mode 100755 index 0000000..6a4d46c Binary files /dev/null and b/test/.TestServerMonitor.py.swp differ diff --git a/test/TestML.py b/test/TestML.py old mode 100644 new mode 100755 diff --git a/test/TestServerMonitor.py b/test/TestServerMonitor.py old mode 100644 new mode 100755 index 9d59a35..434a2ee --- a/test/TestServerMonitor.py +++ b/test/TestServerMonitor.py @@ -4,7 +4,7 @@ from monitor import Env, DetailProcess, ProcessCounter, Sandbox, FileWatch import monitor import os import json -from utils.workers import Top, Learner +#from utils.workers import Top, Learner #from multiprocessing import Lock from threading import Lock path = os.environ['MONITOR_CONFIG_PATH'] @@ -27,10 +27,11 @@ class TestMonitorServer(unittest.TestCase): self.assertTrue(p.evaluate('PATH') == 0) def test_RunningProcess(self): p = DetailProcess() - p.init(['kate','rabbitmq-server','python','apache2','firefox']) + #p.init(['kate','rabbitmq-server','python','apache2','firefox']) + p.init(CONFIG['apps']) r = p.composite() - for row in r: - print row['label'],row['status'],row['proc_count'] + #for row in r: + # print row['user'],row['pid'],row['label'],row['status'],' mem ',row['memory_usage'],' cpu ',row['cpu_usage'] self.assertTrue(r) def test_ProcessCount(self): @@ -47,21 +48,22 @@ class TestMonitorServer(unittest.TestCase): p.init({"sandbox":sandbox_path,"requirements":requirements_path}) p.composite() def test_StartTop(self): - lock = Lock() - p = Top(CONFIG,lock) + pass + #lock = Lock() + #p = Top(CONFIG,lock) #p.start() #p.join() def test_StartLearner(self): - lock = Lock() - p = Learner(CONFIG,lock) - p.start() + pass + #lock = Lock() + #p = Learner(CONFIG,lock) + #p.start() def test_FileWatch(self): - conf =CONFIG['monitor']['folder'] - path =os.environ['FILE_PATH'] + #conf =CONFIG['monitor']['folders'] + #path =os.environ['FILE_PATH'] fw = FileWatch() - fw.init([path]) - print fw.composite() + print fw.evaluate('/Users/steve/Music') if __name__ == '__main__' : unittest.main() diff --git a/test/data.csv b/test/data.csv old mode 100644 new mode 100755 diff --git a/test/demo.py b/test/demo.py old mode 100644 new mode 100755 diff --git a/test/log b/test/log new file mode 100755 index 0000000..53b9601 --- /dev/null +++ b/test/log @@ -0,0 +1,10 @@ +steve 55219 S /Applications/Google Chrome.app/Contents/MacOS/Google Chrome +steve 55222 S /Applications/Google Chrome.app/Contents/Versions/62.0.3202.89/Google Chrome Framework.framework/Helpers/crashpad_handler --monitor-self-annotation=ptype=crashpad-handler --database=/Users/steve/Library/Application Support/Google/Chrome/Crashpad --metrics-dir=/Users/steve/Library/Application Support/Google/Chrome --url=https://clients2.google.com/cr/report --annotation=channel= --annotation=plat=OS X --annotation=prod=Chrome_Mac --annotation=ver=62.0.3202.89 --handshake-fd=10 +steve 55769 S /Applications/Google Chrome.app/Contents/Versions/62.0.3202.89/Google Chrome Helper.app/Contents/MacOS/Google Chrome Helper --type=renderer --field-trial-handle=1238980667292921318,3167933454395450532,131072 --service-pipe-token=F80544BD4F16DC79DDCA0EFA740A68A4 --lang=en-US --enable-offline-auto-reload --enable-offline-auto-reload-visible-only --blink-settings=disallowFetchForDocWrittenScriptsInMainFrame=false,disallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections=true --enable-pinch --num-raster-threads=2 --enable-zero-copy --enable-gpu-memory-buffer-compositor-resources --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,3553;0,11,34037;0,12,34037;0,13,34037;0,14,3553;0,15,3553;0,16,3553;0,17,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,3553;1,11,34037;1,12,34037;1,13,34037;1,14,3553;1,15,3553;1,16,3553;1,17,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,3553;2,11,3553;2,12,3553;2,13,3553;2,14,3553;2,15,3553;2,16,3553;2,17,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,3553;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,34037;3,12,34037;3,13,34037;3,14,3553;3,15,3553;3,16,3553;3,17,3553;4,0,3553;4,1,3553;4,2,3553;4,3,3553;4,4,3553;4,5,3553;4,6,3553;4,7,3553;4,8,3553;4,9,3553;4,10,3553;4,11,3553;4,12,3553;4,13,3553;4,14,3553;4,15,3553;4,16,3553;4,17,3553;5,0,3553;5,1,3553;5,2,3553;5,3,3553;5,4,3553;5,5,34037;5,6,3553;5,7,3553;5,8,3553;5,9,3553;5,10,3553;5,11,3553;5,12,3553;5,13,34037;5,14,34037;5,15,3553;5,16,34037;5,17,34037;6,0,3553;6,1,3553;6,2,3553;6,3,3553;6,4,3553;6,5,34037;6,6,3553;6,7,3553;6,8,3553;6,9,3553;6,10,3553;6,11,3553;6,12,3553;6,13,34037;6,14,34037;6,15,3553;6,16,34037;6,17,34037 --disable-accelerated-video-decode --enable-gpu-async-worker-context --service-request-channel-token=F80544BD4F16DC79DDCA0EFA740A68A4 --renderer-client-id=58 +steve 55907 S /Applications/Google Chrome.app/Contents/Versions/62.0.3202.89/Google Chrome Helper.app/Contents/MacOS/Google Chrome Helper --type=renderer --field-trial-handle=1238980667292921318,3167933454395450532,131072 --service-pipe-token=0B5FD25F52F7738E49F22DB4C96F3919 --lang=en-US --enable-offline-auto-reload --enable-offline-auto-reload-visible-only --blink-settings=disallowFetchForDocWrittenScriptsInMainFrame=false,disallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections=true --enable-pinch --num-raster-threads=2 --enable-zero-copy --enable-gpu-memory-buffer-compositor-resources --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,3553;0,11,34037;0,12,34037;0,13,34037;0,14,3553;0,15,3553;0,16,3553;0,17,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,3553;1,11,34037;1,12,34037;1,13,34037;1,14,3553;1,15,3553;1,16,3553;1,17,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,3553;2,11,3553;2,12,3553;2,13,3553;2,14,3553;2,15,3553;2,16,3553;2,17,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,3553;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,34037;3,12,34037;3,13,34037;3,14,3553;3,15,3553;3,16,3553;3,17,3553;4,0,3553;4,1,3553;4,2,3553;4,3,3553;4,4,3553;4,5,3553;4,6,3553;4,7,3553;4,8,3553;4,9,3553;4,10,3553;4,11,3553;4,12,3553;4,13,3553;4,14,3553;4,15,3553;4,16,3553;4,17,3553;5,0,3553;5,1,3553;5,2,3553;5,3,3553;5,4,3553;5,5,34037;5,6,3553;5,7,3553;5,8,3553;5,9,3553;5,10,3553;5,11,3553;5,12,3553;5,13,34037;5,14,34037;5,15,3553;5,16,34037;5,17,34037;6,0,3553;6,1,3553;6,2,3553;6,3,3553;6,4,3553;6,5,34037;6,6,3553;6,7,3553;6,8,3553;6,9,3553;6,10,3553;6,11,3553;6,12,3553;6,13,34037;6,14,34037;6,15,3553;6,16,34037;6,17,34037 --disable-accelerated-video-decode --enable-gpu-async-worker-context --service-request-channel-token=0B5FD25F52F7738E49F22DB4C96F3919 --renderer-client-id=84 +steve 56200 S /Applications/Google Chrome.app/Contents/Versions/62.0.3202.89/Google Chrome Helper.app/Contents/MacOS/Google Chrome Helper --type=renderer --field-trial-handle=1238980667292921318,3167933454395450532,131072 --service-pipe-token=C88DB996E44AD8DA1983C65F152D8B1E --lang=en-US --enable-offline-auto-reload --enable-offline-auto-reload-visible-only --blink-settings=disallowFetchForDocWrittenScriptsInMainFrame=false,disallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections=true --enable-pinch --num-raster-threads=2 --enable-zero-copy --enable-gpu-memory-buffer-compositor-resources --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,3553;0,11,34037;0,12,34037;0,13,34037;0,14,3553;0,15,3553;0,16,3553;0,17,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,3553;1,11,34037;1,12,34037;1,13,34037;1,14,3553;1,15,3553;1,16,3553;1,17,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,3553;2,11,3553;2,12,3553;2,13,3553;2,14,3553;2,15,3553;2,16,3553;2,17,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,3553;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,34037;3,12,34037;3,13,34037;3,14,3553;3,15,3553;3,16,3553;3,17,3553;4,0,3553;4,1,3553;4,2,3553;4,3,3553;4,4,3553;4,5,3553;4,6,3553;4,7,3553;4,8,3553;4,9,3553;4,10,3553;4,11,3553;4,12,3553;4,13,3553;4,14,3553;4,15,3553;4,16,3553;4,17,3553;5,0,3553;5,1,3553;5,2,3553;5,3,3553;5,4,3553;5,5,34037;5,6,3553;5,7,3553;5,8,3553;5,9,3553;5,10,3553;5,11,3553;5,12,3553;5,13,34037;5,14,34037;5,15,3553;5,16,34037;5,17,34037;6,0,3553;6,1,3553;6,2,3553;6,3,3553;6,4,3553;6,5,34037;6,6,3553;6,7,3553;6,8,3553;6,9,3553;6,10,3553;6,11,3553;6,12,3553;6,13,34037;6,14,34037;6,15,3553;6,16,34037;6,17,34037 --disable-accelerated-video-decode --enable-gpu-async-worker-context --service-request-channel-token=C88DB996E44AD8DA1983C65F152D8B1E --renderer-client-id=94 +steve 56438 S /Applications/Google Chrome.app/Contents/Versions/62.0.3202.89/Google Chrome Helper.app/Contents/MacOS/Google Chrome Helper --type=renderer --field-trial-handle=1238980667292921318,3167933454395450532,131072 --service-pipe-token=D729585EF122EF8234F1E5893A721D5D --lang=en-US --enable-offline-auto-reload --enable-offline-auto-reload-visible-only --blink-settings=disallowFetchForDocWrittenScriptsInMainFrame=false,disallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections=true --enable-pinch --num-raster-threads=2 --enable-zero-copy --enable-gpu-memory-buffer-compositor-resources --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,3553;0,11,34037;0,12,34037;0,13,34037;0,14,3553;0,15,3553;0,16,3553;0,17,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,3553;1,11,34037;1,12,34037;1,13,34037;1,14,3553;1,15,3553;1,16,3553;1,17,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,3553;2,11,3553;2,12,3553;2,13,3553;2,14,3553;2,15,3553;2,16,3553;2,17,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,3553;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,34037;3,12,34037;3,13,34037;3,14,3553;3,15,3553;3,16,3553;3,17,3553;4,0,3553;4,1,3553;4,2,3553;4,3,3553;4,4,3553;4,5,3553;4,6,3553;4,7,3553;4,8,3553;4,9,3553;4,10,3553;4,11,3553;4,12,3553;4,13,3553;4,14,3553;4,15,3553;4,16,3553;4,17,3553;5,0,3553;5,1,3553;5,2,3553;5,3,3553;5,4,3553;5,5,34037;5,6,3553;5,7,3553;5,8,3553;5,9,3553;5,10,3553;5,11,3553;5,12,3553;5,13,34037;5,14,34037;5,15,3553;5,16,34037;5,17,34037;6,0,3553;6,1,3553;6,2,3553;6,3,3553;6,4,3553;6,5,34037;6,6,3553;6,7,3553;6,8,3553;6,9,3553;6,10,3553;6,11,3553;6,12,3553;6,13,34037;6,14,34037;6,15,3553;6,16,34037;6,17,34037 --disable-accelerated-video-decode --enable-gpu-async-worker-context --service-request-channel-token=D729585EF122EF8234F1E5893A721D5D --renderer-client-id=121 +steve 56465 S /Applications/Google Chrome.app/Contents/Versions/62.0.3202.89/Google Chrome Helper.app/Contents/MacOS/Google Chrome Helper --type=renderer --field-trial-handle=1238980667292921318,3167933454395450532,131072 --service-pipe-token=A03C950DF6F1563A7497363A4712D160 --lang=en-US --enable-offline-auto-reload --enable-offline-auto-reload-visible-only --blink-settings=disallowFetchForDocWrittenScriptsInMainFrame=false,disallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections=true --enable-pinch --num-raster-threads=2 --enable-zero-copy --enable-gpu-memory-buffer-compositor-resources --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,3553;0,11,34037;0,12,34037;0,13,34037;0,14,3553;0,15,3553;0,16,3553;0,17,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,3553;1,11,34037;1,12,34037;1,13,34037;1,14,3553;1,15,3553;1,16,3553;1,17,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,3553;2,11,3553;2,12,3553;2,13,3553;2,14,3553;2,15,3553;2,16,3553;2,17,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,3553;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,34037;3,12,34037;3,13,34037;3,14,3553;3,15,3553;3,16,3553;3,17,3553;4,0,3553;4,1,3553;4,2,3553;4,3,3553;4,4,3553;4,5,3553;4,6,3553;4,7,3553;4,8,3553;4,9,3553;4,10,3553;4,11,3553;4,12,3553;4,13,3553;4,14,3553;4,15,3553;4,16,3553;4,17,3553;5,0,3553;5,1,3553;5,2,3553;5,3,3553;5,4,3553;5,5,34037;5,6,3553;5,7,3553;5,8,3553;5,9,3553;5,10,3553;5,11,3553;5,12,3553;5,13,34037;5,14,34037;5,15,3553;5,16,34037;5,17,34037;6,0,3553;6,1,3553;6,2,3553;6,3,3553;6,4,3553;6,5,34037;6,6,3553;6,7,3553;6,8,3553;6,9,3553;6,10,3553;6,11,3553;6,12,3553;6,13,34037;6,14,34037;6,15,3553;6,16,34037;6,17,34037 --disable-accelerated-video-decode --enable-gpu-async-worker-context --service-request-channel-token=A03C950DF6F1563A7497363A4712D160 --renderer-client-id=125 +steve 56647 S /Applications/Google Chrome.app/Contents/Versions/62.0.3202.89/Google Chrome Helper.app/Contents/MacOS/Google Chrome Helper --type=renderer --field-trial-handle=1238980667292921318,3167933454395450532,131072 --service-pipe-token=321F9140BBE9F7C61C01CE3A60E2ACA3 --lang=en-US --enable-offline-auto-reload --enable-offline-auto-reload-visible-only --blink-settings=disallowFetchForDocWrittenScriptsInMainFrame=false,disallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections=true --enable-pinch --num-raster-threads=2 --enable-zero-copy --enable-gpu-memory-buffer-compositor-resources --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,3553;0,11,34037;0,12,34037;0,13,34037;0,14,3553;0,15,3553;0,16,3553;0,17,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,3553;1,11,34037;1,12,34037;1,13,34037;1,14,3553;1,15,3553;1,16,3553;1,17,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,3553;2,11,3553;2,12,3553;2,13,3553;2,14,3553;2,15,3553;2,16,3553;2,17,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,3553;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,34037;3,12,34037;3,13,34037;3,14,3553;3,15,3553;3,16,3553;3,17,3553;4,0,3553;4,1,3553;4,2,3553;4,3,3553;4,4,3553;4,5,3553;4,6,3553;4,7,3553;4,8,3553;4,9,3553;4,10,3553;4,11,3553;4,12,3553;4,13,3553;4,14,3553;4,15,3553;4,16,3553;4,17,3553;5,0,3553;5,1,3553;5,2,3553;5,3,3553;5,4,3553;5,5,34037;5,6,3553;5,7,3553;5,8,3553;5,9,3553;5,10,3553;5,11,3553;5,12,3553;5,13,34037;5,14,34037;5,15,3553;5,16,34037;5,17,34037;6,0,3553;6,1,3553;6,2,3553;6,3,3553;6,4,3553;6,5,34037;6,6,3553;6,7,3553;6,8,3553;6,9,3553;6,10,3553;6,11,3553;6,12,3553;6,13,34037;6,14,34037;6,15,3553;6,16,34037;6,17,34037 --disable-accelerated-video-decode --enable-gpu-async-worker-context --service-request-channel-token=321F9140BBE9F7C61C01CE3A60E2ACA3 --renderer-client-id=136 +steve 56685 S /Applications/Google Chrome.app/Contents/Versions/62.0.3202.89/Google Chrome Helper.app/Contents/MacOS/Google Chrome Helper --type=renderer --field-trial-handle=1238980667292921318,3167933454395450532,131072 --service-pipe-token=F9E9F3DA38FB3958B8E596181241B5B3 --lang=en-US --enable-offline-auto-reload --enable-offline-auto-reload-visible-only --blink-settings=disallowFetchForDocWrittenScriptsInMainFrame=false,disallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections=true --enable-pinch --num-raster-threads=2 --enable-zero-copy --enable-gpu-memory-buffer-compositor-resources --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,3553;0,11,34037;0,12,34037;0,13,34037;0,14,3553;0,15,3553;0,16,3553;0,17,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,3553;1,11,34037;1,12,34037;1,13,34037;1,14,3553;1,15,3553;1,16,3553;1,17,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,3553;2,11,3553;2,12,3553;2,13,3553;2,14,3553;2,15,3553;2,16,3553;2,17,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,3553;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,34037;3,12,34037;3,13,34037;3,14,3553;3,15,3553;3,16,3553;3,17,3553;4,0,3553;4,1,3553;4,2,3553;4,3,3553;4,4,3553;4,5,3553;4,6,3553;4,7,3553;4,8,3553;4,9,3553;4,10,3553;4,11,3553;4,12,3553;4,13,3553;4,14,3553;4,15,3553;4,16,3553;4,17,3553;5,0,3553;5,1,3553;5,2,3553;5,3,3553;5,4,3553;5,5,34037;5,6,3553;5,7,3553;5,8,3553;5,9,3553;5,10,3553;5,11,3553;5,12,3553;5,13,34037;5,14,34037;5,15,3553;5,16,34037;5,17,34037;6,0,3553;6,1,3553;6,2,3553;6,3,3553;6,4,3553;6,5,34037;6,6,3553;6,7,3553;6,8,3553;6,9,3553;6,10,3553;6,11,3553;6,12,3553;6,13,34037;6,14,34037;6,15,3553;6,16,34037;6,17,34037 --disable-accelerated-video-decode --enable-gpu-async-worker-context --service-request-channel-token=F9E9F3DA38FB3958B8E596181241B5B3 --renderer-client-id=144 +steve 57072 S+ grep -Ei chrome