Commit graph

58 commits

Author SHA1 Message Date
Nathan Binkert 5738dc3400 stats: fix usage of jobfile 2009-07-02 16:48:21 -07:00
Nathan Binkert f82d4e2364 python: Move various utility classes into a new m5.util package so
they're all in the same place.  This also involves having just one
jobfile.py and moving it into the utils directory to avoid
duplication.  Lots of improvements to the utility as well.

--HG--
rename : src/python/m5/attrdict.py => src/python/m5/util/attrdict.py
rename : util/pbs/jobfile.py => src/python/m5/util/jobfile.py
rename : src/python/m5/util.py => src/python/m5/util/misc.py
rename : src/python/m5/multidict.py => src/python/m5/util/multidict.py
rename : util/stats/orderdict.py => src/python/m5/util/orderdict.py
2008-06-14 20:19:49 -07:00
Nathan Binkert 3c95f5958f Merge iceaxe.:/Volumes/work/research/m5/head
into  iceaxe.:/Volumes/work/research/m5/merge

src/cpu/simple/base.cc:
src/kern/kernel_stats.cc:
src/kern/kernel_stats.hh:
src/kern/system_events.cc:
src/kern/system_events.hh:
src/python/m5/objects/System.py:
src/sim/system.cc:
src/sim/system.hh:
    hand merge

--HG--
rename : build/SConstruct => SConstruct
rename : SConscript => src/SConscript
rename : arch/alpha/freebsd/system.cc => src/arch/alpha/freebsd/system.cc
rename : arch/alpha/linux/system.cc => src/arch/alpha/linux/system.cc
rename : arch/alpha/linux/system.hh => src/arch/alpha/linux/system.hh
rename : arch/alpha/system.cc => src/arch/alpha/system.cc
rename : arch/alpha/tru64/system.cc => src/arch/alpha/tru64/system.cc
rename : base/statistics.cc => src/base/statistics.cc
rename : base/statistics.hh => src/base/statistics.hh
rename : base/stats/mysql.cc => src/base/stats/mysql.cc
rename : base/stats/mysql.hh => src/base/stats/mysql.hh
rename : base/stats/statdb.cc => src/base/stats/statdb.cc
rename : base/stats/statdb.hh => src/base/stats/statdb.hh
rename : base/stats/text.cc => src/base/stats/text.cc
rename : base/stats/text.hh => src/base/stats/text.hh
rename : cpu/simple/cpu.cc => src/cpu/simple/base.cc
rename : kern/kernel_stats.cc => src/kern/kernel_stats.cc
rename : kern/kernel_stats.hh => src/kern/kernel_stats.hh
rename : kern/system_events.cc => src/kern/system_events.cc
rename : kern/system_events.hh => src/kern/system_events.hh
rename : python/m5/objects/System.py => src/python/m5/objects/System.py
rename : sim/system.cc => src/sim/system.cc
rename : sim/system.hh => src/sim/system.hh
rename : test/stattest.cc => src/unittest/stattest.cc
extra : convert_revision : 4bb576a2bf5e32784efc48030bd776c6c7c29a7c
2006-06-11 22:01:34 -04:00
Nathan Binkert 7af93dbdf6 Remove all binning stuff
--HG--
extra : convert_revision : 6da2b3b0b6c2824f2064d42670fd8383edb7c718
2006-06-10 13:08:43 -04:00
Ali Saidi cb0cf2dd8a Updated Authors from bk prs info
--HG--
extra : convert_revision : 77f475b156d81c03a2811818fa23593d5615c685
2006-05-31 19:26:56 -04:00
Nathan Binkert d50b6e5247 Fix some of lisa's barchart changes
util/stats/barchart.py:
    - there is no self.inner_axes
    - don't append an empty value to self.xsubticks, otherwise
    subsequent calls will get extra empty ticks
    - rotate labels 30 degrees instead of 90 so it looks better

--HG--
extra : convert_revision : 1cbac6d1f92bfc6b2c1e886ad5f9d4c78a2b3820
2006-05-02 11:45:42 -04:00
Nathan Binkert 29f50d9345 fix some minor stats stuff
util/stats/stats.py:
    fix up a few of the stats.

--HG--
extra : convert_revision : 61c600cd146900c8cc0cf60a9036f2e999a5e244
2006-02-26 23:06:21 -05:00
Nathan Binkert 10fcad4ce0 Allow graph_group to not be selected so we can have a
normal ungrouped barchart

--HG--
extra : convert_revision : 7d55440c9bb060607eddbb72448a3413944bb6ba
2006-02-26 10:44:01 -05:00
Nathan Binkert 57092567ba better function categorization
util/stats/categories.py:
    bit more stuff for categorizing functions

--HG--
extra : convert_revision : 03617246a9254a580684dce82836517d1efdfc5b
2006-02-26 01:00:15 -05:00
Nathan Binkert 2c3e8d148c fix small python bug in database processing code
util/stats/db.py:
    fix usage of hasattr

--HG--
extra : convert_revision : b384e1efeda76921c565f9f391694c27273edcec
2006-02-26 00:57:37 -05:00
Nathan Binkert b7e4d16ea9 code cleanup
util/stats/barchart.py:
    clean up some of lisa's messy code
    remove trailing whitespace while I'm at it.

--HG--
extra : convert_revision : f2fe6777fb4b458fa1d5b5b743f6274014c229ad
2006-02-26 00:35:10 -05:00
Nathan Binkert 0d71a17ed8 forgot to add a chart option
util/stats/chart.py:
    add a bool config option for determining
    if the legend is inside or outside the figure

--HG--
extra : convert_revision : e862d1832a0cc3c1837758cc247bc77c0a02ec12
2006-02-26 00:19:02 -05:00
Nathan Binkert cf3667a0e4 add error bars and more options for legend placement
util/stats/barchart.py:
    Add support for error bars
util/stats/barchart.py:
    add support to choose between a legend inside or
    outside the figure.

--HG--
extra : convert_revision : 14273e385c106bf27a2013991f9f34ca6551b96c
2006-02-26 00:11:54 -05:00
Nathan Binkert 46189e9e2b better colors for barcharts
util/stats/barchart.py:
    If there are fewer than 5 colors, pick from a subset of
    5 so there is more consistency in colors between graphs

--HG--
extra : convert_revision : 6cf64c2f8ed81e714e24a3ebe5a7a60ca168b231
2006-02-25 23:48:13 -05:00
Lisa Hsu fcb9718dcd 1) make it pretty for large clusters
2) make subticks vertical so they can be longer
3) make inner and outer axes farther apart to make room for subtick's vertical labels

--HG--
extra : convert_revision : 91a1aab3f1078921edd53428e6712744210c9f1b
2006-02-24 18:08:14 -05:00
Lisa Hsu a611b81003 few changes for nate:
1) cosmetic - removing visibility of meta axes except for the tick labels.
2) unless subticklabels defined, don't do meta axes. (instead of assuming if you have 3D graph, do meta axes)

--HG--
extra : convert_revision : 396011ffaa51ea4066b34257f6fd5b3faac9d242
2006-02-18 20:10:42 -05:00
Lisa Hsu 6cf0ba8495 remove print statements
--HG--
extra : convert_revision : abd635034424eeb9685aea777440a02887ce81a6
2006-02-18 18:39:19 -05:00
Lisa Hsu 71bf22165a more changes for subtick labels.
util/stats/barchart.py:
    oop forgot this for 1D graph cases.
util/stats/chart.py:
    need to add default param to chart.

--HG--
extra : convert_revision : f4e6c6c614d584e7928ed905e97608716455ab6c
2006-02-18 17:29:43 -05:00
Lisa Hsu ef14fd4ad3 Now you can have sublabels for every bar using the self.xsubticklabels parameter.
--HG--
extra : convert_revision : a6bdf3a972e81c84947b7d6ae76f828494a125c8
2006-02-18 17:24:23 -05:00
Nathan Binkert 45ecb2b69e Create the ProxyError Exception. Raise it when an unproxy
operation fails because information is wrong or not available.

--HG--
extra : convert_revision : 1fd90c1291618b09752179cfa6894f1df495fffd
2005-12-19 02:07:06 -05:00
Nathan Binkert adf47c95b0 Add a little bit of support to grab info for making graphs
without using the jobfile.

util/stats/db.py:
util/stats/profile.py:
    Make it possible to send job as a string and to set the system
    separately from the job.

--HG--
extra : convert_revision : 08aaebd3f9a1643bd41953b43f3b80dc97e6592f
2005-12-19 02:02:58 -05:00
Nathan Binkert c0a4836077 Major improvements in the graph output code. Mostly adding more
options, making existing options more visible and dealing with
holes in data better.

util/stats/barchart.py:
    - move the options for BarChart to a base class ChartOptions so
    they can be more easily set and copied.
    - add an option to set the chart size (so you can adjust the aspect ratio)
    - don't do the add_subplot thing, use add_axes directly so we can
    affect the size of the figure itself to make room for the legend
    - make the initial array bottom floating point so we don't lose precision
    - add an option to set the limits on the y axis
    - use a figure legend instead of an axes legend so we can put the legend
    outside of the actual chart.  Also add an option to set the fontsize of
    the legend.
    - initial hack at outputting csv files
util/stats/db.py:
    don't print out an error when the run is missing from the database
    just return None, the error will be print elsewhere.
util/stats/output.py:
    - make StatOutput derive from ChartOptions so that it's easier to
    set default chart options.
    - make the various output functions (graph, display, etc.) take the
    name of the data as a parameter instead of making it a parameter to
    __init__.  This allows me to create the StatOutput object with
    generic parameters while still being able to specialize the name
    after the fact
    - add support for graph_group and graph_bars to be applied to multiple
    configuration groups.  This results in a cross product of the groups
    to be generated and used.
    - flush the html file output as we go so that we can load the file
    while graphs are still being generated.
    - make the proxy a parameter to the graph function so the proper system's
    data can be graphed
    - for any groups or bars that are completely missing, remove them from
    the graph.  This way, if we decide not to do a set of runs, there won't
    be holes in the data.
    - output eps and ps by default in addition to the png.
util/stats/profile.py:
    - clean up the data structures that are used to store the function
    profile information and try our best to avoid keeping extra data
    around that isn't used.
    - make get() return None if a job is missing so we know it was
    missing rather than the all zeroes thing.
    - make the function profile categorization stuff total up to 100%
    - Fixup the x-axis and y-axis labels.
    - fix the dot file output stuff.
util/stats/stats.py:
    support the new options stuff for StatOutput

--HG--
extra : convert_revision : fae35df8c57a36257ea93bc3e0a0e617edc46bb7
2005-11-22 21:50:34 -05:00
Nathan Binkert 7819ca6b97 Change the set of statistics that are generated when specifying "all"
--HG--
extra : convert_revision : 8b803b1b3bbec0b35b6805593b0dd598e5b519cf
2005-11-22 21:20:36 -05:00
Nathan Binkert 634a0d8469 More changes from cpus named fullX to runX
--HG--
extra : convert_revision : e3c117dc5751be13bd4b014a7fa6df0debfb48f0
2005-11-22 21:18:11 -05:00
Nathan Binkert 7584604fa9 make the NUMCPUS parameter always refer to the total number of cpus
on the test system.
add an option for pio_delay_write to run.py

util/stats/stats.py:
    full0 -> run0 due to run.py change
    sim_ticks doesn't make sense with tick = ps, so use
    one of the cpu's numCycles paramter

--HG--
extra : convert_revision : db9dbe014549d823edc10395f5241db5e907df01
2005-11-22 21:05:02 -05:00
Nathan Binkert a102318412 Deal with divide by zero in the python stats stuff.
util/stats/info.py:
    If an operation results in a divide by zero, just return None

--HG--
extra : convert_revision : 19cb4319734a3a9cf02bb1966fed42eb0c8a8ade
2005-11-20 23:42:53 -05:00
Nathan Binkert 67c276ed2e implement __str__ for all of the proxy stuff so we can
actually print out a statistic.

--HG--
extra : convert_revision : 043be6bd729e74d2220c5ae8aa1fc739aa247715
2005-11-20 23:30:13 -05:00
Ali Saidi 3b66cb49ec Merge zizzer:/bk/m5
into  zeep.eecs.umich.edu:/z/saidi/work/m5

--HG--
extra : convert_revision : 3cc23080d19cc464a8ba7c1c93b6e5d45af7d463
2005-11-02 14:56:18 -05:00
Ali Saidi 0523736b96 Change the output of stability info a little bit
--HG--
extra : convert_revision : bc467a40593234a1e3b694a741b4a7c2154a95ea
2005-11-02 14:55:05 -05:00
Nathan Binkert 13bf7e27ac Fix a couple of bug in the values() vector accessor
util/stats/db.py:
    need to import the values function
util/stats/info.py:
    it's just run

--HG--
extra : convert_revision : 3cb67d8112a1a5fdf761b73732859a71f585bd1f
2005-10-21 17:28:47 -04:00
Nathan Binkert 12822443a5 Minor updates to the profile code.
util/stats/profile.py:
    Pass around the number of symbols limit
    deal with categorization a bit better.

--HG--
extra : convert_revision : 908410e296efd4514f2dfc0eb9e6e42834585560
2005-10-21 16:32:48 -04:00
Nathan Binkert e00237e49e Major cleanup of the statistics handling code
util/stats/db.py:
    Build a result object as the result of a query operation so it is
    easier to populate and contains a bit more information than just
    a big dict.  Also change the next level data into a matrix instead
    of a dict of dicts.
    Move the "get" function into the Database object.  (The get function
    is used by the output parsing function as the interface for accessing
    backend storage, same interface for profile stuff.)
    Change the old get variable to the method variable, it describes how
    the get works, (whether using sum, stdev, etc.)
util/stats/display.py:
    Clean up the display functions, mostly formatting.
    Handle values the way they should be now.
util/stats/info.py:
    Totally re-work how values are accessed from their data store.
    Access individual values on demand instead of calculating everything
    and passing up a huge result from the bottom.
    This impacts the way that proxying works, and in general, everything
    is now esentially a proxy for the lower level database.  Provide new
    operators: unproxy, scalar, vector, value, values, total, and len which
    retrieve the proper result from the object they are called on.
    Move the ProxyGroup stuff (proxies of proxies!) here from the now gone
    proxy.py file and integrate the shared parts of the code.  The ProxyGroup
    stuff allows you to write formulas without specifying the statistics
    until evaluation time.

    Get rid of global variables!
util/stats/output.py:
    Move the dbinfo stuff into the Database itself.  Each source should
    have it's own get() function for accessing it's data.
    This get() function behaves a bit differently than before in that it
    can return vectors as well, deal with these vectors and with no result
    conditions better.
util/stats/stats.py:
    the info module no longer has the source global variable, just
    create the database source and pass it around as necessary

--HG--
extra : convert_revision : 8e5aa228e5d3ae8068ef9c40f65b3a2f9e7c0cff
2005-10-21 16:29:13 -04:00
Nathan Binkert ce5f326f11 Default jobfile for stats
util/stats/stats.py:
    Make the default jobfile Test.py in the current directory
    add the -J flag to tell it not to use a jobfile

--HG--
extra : convert_revision : 5cf5bb2f32ed9c9701a94eabc9b2a538581acf94
2005-10-18 19:17:36 -04:00
Nathan Binkert a81c03737a Add new function profiling stuff, wrap the pc_sample stuff into it.
SConscript:
    Get rid of the pc_sample stuff and move to the new profiling stuff
base/traceflags.py:
    DPRINTF Stack stuff
cpu/base.cc:
cpu/base.hh:
cpu/exec_context.cc:
cpu/exec_context.hh:
cpu/simple/cpu.cc:
    Add profiling stuff
kern/kernel_stats.hh:
    Use a smart pointer
sim/system.cc:
sim/system.hh:
    Create a new symbol table that has all of the symbols for a
    particular system
util/stats/categories.py:
    change around the categories, add categories for function
    profiling stuff
util/stats/profile.py:
    No profile parsing and display code to deal with function
    profiling stuff, graph, dot, and text outputs.

--HG--
extra : convert_revision : b3de0cdc8bd468e42647966e2640ae009bda9eb8
2005-10-18 19:07:42 -04:00
Nathan Binkert 31d13e9a9b Improvements to the graphing output
util/stats/output.py:
    Create the graph directory if it doesn't exist
    Don't write out a graph if all of the jobs for that graph are missing

--HG--
extra : convert_revision : 7993baf1a4be33a062f86a4f09791f01eaafa43c
2005-10-18 15:01:51 -04:00
Nathan Binkert 02098f8e7b Totally re-work the way that jobfiles are done so there is more
information that can be used for other aspects of sending jobs.
New graphing output stuff with matplotlib.

util/pbs/job.py:
    Shuffle code around and create the JobDir class which encapsulates
    all of the functionality needed for making, organizing, and cleaning
    a job directory.
    Better status output
util/pbs/jobfile.py:
    Majory re-working of the jobfile code.
    A job file now consists of several objects that describe how
    jobs should be run, it includes information about checkpoints,
    and graphing.
util/pbs/send.py:
    use the new jobfile code.
    deal with the 15 character limit of pbs by truncating the name and
    using the raj hack.
util/stats/db.py:
    fix the __str__ function for nodes
    provide __getitem__ for the Database class
util/stats/stats.py:
    use the jobfile stuff to figure out what the proper naming
    and organziation of the graphs should be.
    move all output code to output.py, get rid of ploticus and use
    matplotlib

--HG--
rename : util/categories.py => util/stats/categories.py
extra : convert_revision : 0d793cbf6ad9492290e8ec875ce001c84095e1f7
2005-09-17 16:51:26 -04:00
Nathan Binkert 6ff9439afe Cleanup copyright stuff. Add our copyright files that
are ours

arch/alpha/alpha_linux_process.hh:
arch/alpha/alpha_tru64_process.hh:
base/loader/object_file.cc:
base/loader/object_file.hh:
sim/process.cc:
sim/process.hh:
    remove $Id$ string
cpu/ozone/cpu.cc:
cpu/ozone/cpu_impl.hh:
cpu/ozone/ea_list.cc:
cpu/ozone/ea_list.hh:
kern/linux/sched.hh:
kern/linux/thread_info.hh:
    Add M5 Copyright
cpu/trace/opt_cpu.cc:
dev/rtcreg.h:
    nit
kern/linux/aligned.hh:
kern/linux/hwrpb.hh:
util/oprofile-top.py:
util/stats/db.py:
util/stats/dbinit.py:
util/stats/display.py:
util/stats/info.py:
util/stats/print.py:
util/stats/stats.py:
    Cleanup copyright

--HG--
extra : convert_revision : 4274e9121ef7543e0b3999b31e935edb19c54d46
2005-06-05 11:02:38 -04:00
Ali Saidi 5070f27c69 added copyright
kern/linux/sched.hh:
kern/linux/thread_info.hh:
    got rid of everything but exactly what we needed
util/categories.py:
    newest version from one of my repositories

--HG--
extra : convert_revision : c4328e5938d421d60493c0da07022bfa9e92c404
2005-06-05 04:08:05 -04:00
Nathan Binkert c82562c740 full_system isn't a useful parameter anymore, get rid of it.
python/m5/objects/Root.mpy:
sim/universe.cc:
util/stats/stats.py:
    full_system isn't a useful parameter

--HG--
extra : convert_revision : 557091be1faa3cf121c55102aba4e6f4c1bd45ef
2005-04-06 16:58:40 -04:00
Ron Dreslinski 59f43580bc Update so that statistics can be plotted correctly
util/stats/stats.py:
    Changed some stuff for graphing purposes:
    full_cpu is now full0
    frequencies are now s,m,f,q not s,6,8,q
    L2 is now l2
    etherdev is now etherdev0

    May want to consider fact that NAT box should be the sum of etherdev0 and etherdev1 (not in script yet)

--HG--
extra : convert_revision : 39a7d0bcf1b9354a77c12de5981e8277408ba791
2005-03-24 15:52:30 -05:00
Ali Saidi a8182f74df update profile code to use shared categories file
util/stats/stats.py:
    add database command to help

--HG--
extra : convert_revision : 5d77e9d3e142f884d08d34b730c385c41c6bcafb
2005-03-23 15:55:09 -05:00
Nathan Binkert c2014cb5ad get rid of issequence and just use the isinstance builtin
--HG--
extra : convert_revision : eca99aa35ad5c5c1c86325f55cf693ff585c9826
2005-03-15 13:22:47 -05:00
Nathan Binkert 52403a5ddf get rid of defined and just access the env dict directly
get rid of the alias for true to True and false to False to keep
consistent python syntax.

util/stats/info.py:
    Fix typo

--HG--
extra : convert_revision : e69588a8de52424e043315e70008ca3a3ede7d5b
2005-02-03 17:04:54 -05:00
Ali Saidi 886f905785 added total bytes/bandwidth/packets formulas to nics
cleaned up stability code and wrote some better help for stats.py
fixed sample bug in info.py

dev/ns_gige.cc:
dev/ns_gige.hh:
dev/sinic.cc:
dev/sinic.hh:
    add total bandwidth/packets/bytes stats
util/stats/info.py:
    fixed samples bug
util/stats/stats.py:
    cleaned up stability code and wrote a bit better help

--HG--
extra : convert_revision : cae06f4fac744d7a51ee0909f21f03509151ea8f
2005-01-19 18:40:02 -05:00
Ali Saidi cd56e4e08e Ability to check formulas
--HG--
extra : convert_revision : 68a2a19cceb4a8cf8a2798ee5c019d25c0fca3cc
2005-01-18 17:55:35 -05:00
Ali Saidi cbbbc9c57d now really done with stability stats stuff
--HG--
extra : convert_revision : 9bdbcec972f5d06e3ecd99c418fcccfaef7f6f3a
2005-01-18 13:34:58 -05:00
Ali Saidi 24bfd5ef01 finished stability stats option
--HG--
extra : convert_revision : 3ad0a143f79b116c5b18321846653d627429882a
2005-01-18 13:25:55 -05:00
Ali Saidi dfecc89150 added stats code to check stability
util/stats/db.py:
    added working listticks (for printing) and retticks(for using in python) code
util/stats/stats.py:
    added stability function that checks if all samples are within 10% of mean.

--HG--
extra : convert_revision : 7eb1714db75e456f248fe7cae73db1c57642947d
2005-01-14 17:50:36 -05:00
Ali Saidi 3e5a3df24f automerged had issues with the options.XXXXX in stats.py
--HG--
extra : convert_revision : 44db6642c1fb46eb515acd5a6d8465859a40891a
2005-01-14 00:05:49 -05:00
Ali Saidi 21c6dd80d7 fix a display bug
add option to limit results to a set of ticks
fix ticks code to work

util/stats/info.py:
    change samples -> ticks and pass all parameters
util/stats/stats.py:
    add option to select a set of ticks and fix display bug

--HG--
extra : convert_revision : eca80a8c6bb75cf82bf1624f3d0170690b2928af
2005-01-13 23:59:39 -05:00