summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/node-snp.lua
blob: 31c7771ac92e6d25c9baed10bf493b65d392d095 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
if not modules then modules = { } end modules ['node-snp'] = {
    version   = 1.001,
    comment   = "companion to node-ini.mkiv",
    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
    copyright = "PRAGMA ADE / ConTeXt Development Team",
    license   = "see context related readme files"
}

if not nodes then
    nodes = { } -- also loaded in mtx-timing
end

local snapshots  = { }
nodes.snapshots  = snapshots

local nodeusage  = nodes.pool and nodes.pool.usage
local clock      = os.gettimeofday or os.clock -- should go in environment
local lasttime   = clock()
local samples    = { }

local parameters = {
    "cs_count",
    "dyn_used",
    "elapsed_time",
    "luabytecode_bytes",
    "luastate_bytes",
    "max_buf_stack",
    "obj_ptr",
    "pdf_mem_ptr",
    "pdf_mem_size",
    "pdf_os_cntr",
--  "pool_ptr", -- obsolete
    "str_ptr",
}

function snapshots.takesample(comment)
    if nodeusage then
        local c = clock()
        local t = {
            elapsed_time = c - lasttime,
            node_memory  = nodeusage(),
            comment      = comment,
        }
        for i=1,#parameters do
            local parameter = parameters[i]
            local ps = status[parameter]
            if ps then
                t[parameter] = ps
            end
        end
        samples[#samples+1] = t
        lasttime = c
    end
end

function snapshots.getsamples()
    return samples -- one return value !
end

function snapshots.resetsamples()
    samples = { }
end

function snapshots.getparameters()
    return parameters
end