biggraph = "arg=rpctotal&graph=diff" graphname = new Array( "arg=*&graph=diskbw", "disk bytes/second", "arg=*&graph=netbw", "network bytes/second", "arg=*&graph=iobw", "total: disk+net bytes/second", "arg=apartreadbyte&graph=diff", "arena read bytes/second", "arg=apartwritebyte&graph=diff", "arena write bytes/second", "arg=bloomfalsemiss&graph=pctdiff&arg2=bloomlookup&max=100", "bloom false hit %", "arg=bloomhit&graph=pctdiff&arg2=bloomlookup&max=100", "bloom miss %", "arg=bloomlookuptime&graph=divdiff&arg2=bloomlookup", "bloom lookup time", "arg=bloomones&graph=pct&arg2=bloombits&max=100", "bloom usage %", "arg=dcachedirty&graph=pct&arg2=dcachesize&max=100", "dcache dirty %", "arg=dcachehit&graph=pctdiff&arg2=dcachelookup&max=100", "dcache hit %", "arg=dcachelookuptime&graph=divdiff&arg2=dcachelookup", "dcache lookup time", "arg=dcachelookup&graph=diff", "dcache lookups/second", "arg=dcachewrite&graph=diff", "dcache writes/second", "arg=icachedirty&graph=pct&arg2=icachesize&max=100", "icache dirty %", "arg=icachehit&graph=pctdiff&arg2=icachelookup&max=100", "icache hit %", "arg=scachehit&graph=pctdiff&arg2=icachelookup&max=100", "scache hit %", "arg=icachemiss&graph=pctdiff&arg2=icachelookup&max=100", "icache miss %", "arg=icachelookuptime&graph=divdiff&arg2=icachelookup", "icache lookup time", "arg=icacheprefetch&graph=diff", "icache prefetches/second", "arg=icachewrite&graph=diff", "icache writes/second", "arg=isectreadbyte&graph=diff", "isect read bytes/second", "arg=isectwritebyte&graph=diff", "isect write bytes/second", "arg=lcachehit&graph=pctdiff&arg2=lcachelookup&max=100", "lump cache hit %", "arg=lcachelookuptime&graph=divdiff&arg2=lcachelookup", "lump cache lookup time", "arg=lcachewrite&graph=diff", "lcache writes/second", "arg=rpcreadbyte&graph=diff", "read RPC bytes/second", "arg=rpctotal&graph=diff", "RPCs/second", "arg=rpcwritebyte&graph=diff", "write RPC bytes/second", "arg=rpcreadtime&graph=divdiff&arg2=rpcread", "read RPC time", "arg=rpcwritetime&graph=divdiff&arg2=rpcwrite", "write RPC time", "arg=rpcreadcachedtime&graph=divdiff&arg2=rpcreadcached", "cached read RPC time", "arg=rpcreaduncachedtime&graph=divdiff&arg2=rpcreaduncached", "uncached read RPC time", "arg=rpcwritenewtime&graph=divdiff&arg2=rpcwritenew", "fresh write RPC time", "arg=rpcwriteoldtime&graph=divdiff&arg2=rpcwriteold", "dup write RPC time", "arg=cigloadtime&graph=divdiff&arg2=cigload", "cig load time", "arg=sumreadbyte&graph=diff", "checksum bytes/second", "arg=dblockstall", "threads stalled: dblock", "arg=dcachestall", "threads stalled: dcache", "arg=icachestall", "threads stalled: icache", "arg=lumpstall", "threads stalled: lump", "arg=END" ) column0 = new Array( "column0", "!bandwidth", "arg=*&graph=iobw", "arg=*&graph=netbw", "arg=rpcreadbyte&graph=diff", "arg=rpcwritebyte&graph=diff", "arg=*&graph=diskbw", "arg=isectreadbyte&graph=diff", "arg=isectwritebyte&graph=diff", "arg=apartreadbyte&graph=diff", "arg=apartwritebyte&graph=diff", "arg=sumreadbyte&graph=diff", "!bloom filter", "arg=bloomhit&graph=pctdiff&arg2=bloomlookup&max=100", "arg=bloomfalsemiss&graph=pctdiff&arg2=bloomlookup&max=100", "arg=bloomones&graph=pct&arg2=bloombits&max=100", "END" ) column1 = new Array( "column1", "!icache", "arg=icachedirty&graph=pct&arg2=icachesize&max=100", "arg=icachehit&graph=pctdiff&arg2=icachelookup&max=100", "arg=scachehit&graph=pctdiff&arg2=icachelookup&max=100", "arg=icachemiss&graph=pctdiff&arg2=icachelookup&max=100", "arg=icachewrite&graph=diff", "arg=icacheprefetch&graph=diff", "arg=scacheprefetch&graph=diff", "!dcache", "arg=dcachedirty&graph=pct&arg2=dcachesize&max=100", "arg=dcachehit&graph=pctdiff&arg2=dcachelookup&max=100", "arg=dcachelookup&graph=diff", "arg=dcachewrite&graph=diff", "!lump cache", "arg=lcachehit&graph=pctdiff&arg2=lcachelookup&max=100", "arg=lcachewrite&graph=diff", "END" ) column2 = new Array( "column2", "!stalls", "arg=icachestall", "arg=dcachestall", "arg=dblockstall", "arg=lumpstall", "!timings", "arg=bloomlookuptime&graph=divdiff&arg2=bloomlookup", "arg=icachelookuptime&graph=divdiff&arg2=icachelookup", "arg=lcachelookuptime&graph=divdiff&arg2=lcachelookup", "arg=dcachelookuptime&graph=divdiff&arg2=dcachelookup", "arg=rpcreadtime&graph=divdiff&arg2=rpcread", "arg=rpcwritetime&graph=divdiff&arg2=rpcwrite", "arg=rpcreadcachedtime&graph=divdiff&arg2=rpcreadcached", "arg=rpcreaduncachedtime&graph=divdiff&arg2=rpcreaduncached", "arg=rpcwritenewtime&graph=divdiff&arg2=rpcwritenew", "arg=rpcwriteoldtime&graph=divdiff&arg2=rpcwriteold", "arg=cigloadtime&graph=divdiff&arg2=cigload", "END" ) col0info = new Array(column0.length) col1info = new Array(column1.length) col2info = new Array(column2.length) function cleardebug() { var p = document.getElementById("debug") p.innerHTML = "" } function debug(s) { var p = document.getElementById("debug") if(p.innerHTML == "") p.innerHTML = "clear\n" p.innerHTML += "
"+s } function Ginfo(y, fill, name) { var g = new Object() g.y = y g.fill = fill g.name = name return g } function cleartable(t) { for(var i=t.rows.length-1; i>=0; i--) t.deleteRow(i) } function textofname(name) { for(var i=0; i"+textofname(name)+text+"" row.innerHTML = s } function graphcell(cell, name, dt, wid, ht, fill) { cell.vAlign = "bottom" cell.align = "center" cell.width = wid cell.height = ht } function redraw() { redrawgraphs() redrawsettings() } function redrawgraphs() { var t = document.getElementById("statgraphs") cleartable(t) for(var i=0; i<4; i++) t.insertRow(i) graphrow(t.rows[0], 3, biggraph, 86400, 900, 30, 0, " – showing 24 hours") graphrow(t.rows[1], 3, biggraph, 3600, 900, 30, 1, " – showing 1 hour") t.rows[2].innerHTML = "" var r = t.rows[3] graphtable(r.insertCell(0), column0, col0info, 0) graphtable(r.insertCell(1), column1, col1info, 2) graphtable(r.insertCell(2), column2, col2info, 4) } function graphtable(bigcell, list, infolist, fill) { bigcell.innerHTML = "
" bigcell.vAlign = "top" var t = document.getElementById(list[0]) t.onclick = columnclick for(var i=1; i 1){ r.innerHTML = "" r = t.insertRow(t.rows.length) } r.innerHTML = ""+name+"" }else{ graphrow(r, 1, name, 600, 300, 30, fill++, "") } } } function xpos(obj) { var x = 0 if(obj.fixedx) return obj.fixedx if(obj.offsetParent){ while(obj.offsetParent){ x += obj.offsetLeft obj = obj.offsetParent } }else if(obj.x) x = obj.x return x } function ypos(obj) { var y = 0 if(obj.fixedy) return obj.fixedy if(obj.offsetParent){ while(obj.offsetParent){ y += obj.offsetTop obj = obj.offsetParent } }else if(obj.y) y = obj.y return y } function scrollleft() { return document.body.scrollLeft } function scrolltop() { return document.body.scrollTop } function columnclick(e) { if(e.which && e.which != 1) return; var g = findgraph(scrollleft()+e.clientX, scrolltop()+e.clientY) if(g && g.name.substring(0,1) != "!"){ biggraph = g.name var t = document.getElementById("statgraphs") graphrow(t.rows[0], 3, biggraph, 86400, 900, 30, 0, " – showing 24 hours") graphrow(t.rows[1], 3, biggraph, 3600, 900, 30, 1, " – showing 1 hour") } } function findgraph(x, y) { var g if(g = findgraphin(x, y, "column2", col2info)) return g if(g = findgraphin(x, y, "column1", col1info)) return g if(g = findgraphin(x, y, "column0", col0info)) return g return } function findgraphin(x, y, tname, info) { var t = document.getElementById(tname) if(x < xpos(t)) return y = y - ypos(t) for(var i=info.length-2; i>=1; i--){ if(y > info[i].y) return info[i] } return } function setof(name, val, list) { var s = "" for(var i=0; i"+val+"" else s = s+" "+list[i]+"" } return s } function loglinks(list) { var s = "" for(var i=0; i"+list[i]+"" } return s } first = 1 function redrawsettings() { if(first){ loadsettings() first = 0 } var s = "" s = s+"\n" s = s+"logging:"+setof("logging", logging, loggingchoices) s = s+"       " s = s+"stats:"+setof("stats", stats, statschoices) s = s+"\n

\n" s = s+"compression:"+setof("compress", compress, compresschoices1) s = s+"
"+setof("compress", compress, compresschoices2) s = s+"\n

\n" s = s+"index | storage | " s = s+"log:"+loglinks(logs) s = s+"" document.getElementById("settings").innerHTML = s } function set(name, value) { eval(name+"= \""+value+"\"") redrawsettings() // Works in FireFox, not in Safari parent.hidden.location.href = "/set/"+name+"/"+value }