Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

performance profiling infrastructure #67

Open
christoff-buerger opened this issue Sep 13, 2016 · 0 comments
Open

performance profiling infrastructure #67

christoff-buerger opened this issue Sep 13, 2016 · 0 comments

Comments

@christoff-buerger
Copy link
Owner

christoff-buerger commented Sep 13, 2016

Systematic Performance measurements are helpful to evaluate the automatic attribute caching of RACR, pinpoint improvement opportunities and track performance regressions. Scheme distributions often provide tools for detailed code profiling, like function execution and garbage collection times. The parameterisation of example applications for different usage scenarios with different performance-load characteristics like size of abstract syntax tree, number of attributes, size of attribute caches or frequency and impact of rewrites still has to be provisioned however. A generic performance profiling infrastructure, which enables the generation of test series according to user-specified program arguments and the classification and visualisation of respective measurement results, would be very useful.

The functionalities to provide are:

  • a configuration language for the specification of measurement-templates defining the inputs and measured outputs, and their respective names and types, a valid measurement must satisfy
  • a test series generator executing and measuring RACR-programs according to given value ranges; generated test series have to be repeatable
  • a measurement browser enabling the collection and filtering of previous measurements in measurement-compilations; the different measurements of repeated test series have to be combined in an empirically and statistically meaningful way
  • a visualisation generator to plot measurement-compilations; generated plots have to be labeled according to argument types and names
  • an integrity checker to validate stored measurement-compilations against configuration-templates
@christoff-buerger christoff-buerger added this to the RACR version 0.8.5: infrastructure edition (fortitudinem per suburbium et regionem) milestone Sep 13, 2016
@christoff-buerger christoff-buerger self-assigned this Sep 13, 2016
christoff-buerger added a commit that referenced this issue Sep 18, 2016
…ed make-table script adding command line argument checks. Also moved all profiling scripts in the profiling directory.
christoff-buerger added a commit that referenced this issue Sep 19, 2016
…ed make-measurements script adding command line options to select a profiling configuration and save a rerun script. Added sanity checks for provided arguments. Ensured, that temporary resources are properly created and cleaned up.
christoff-buerger added a commit that referenced this issue Sep 20, 2016
… that /dev/null as rerun script for make-measurements works (even as root). Also added the initialisation of generated rerun scripts.
christoff-buerger added a commit that referenced this issue Sep 26, 2016
…ecks for the types and values of measurement parameters (make-measurements script); integer value parameters now trigger iteration-step and -adjustment configurations and respective sanity checks of provided values.
christoff-buerger added a commit that referenced this issue Oct 7, 2016
…ript to parse profiling configurations and extended them with measurement result configuration section.
christoff-buerger added a commit that referenced this issue Oct 8, 2016
…surements.bash now handles not-a-number arguments.
christoff-buerger added a commit that referenced this issue Oct 10, 2016
…pport to specify an execution script to profiling configurations, the parsing of such extended configurations and the execution and logging of execution results in make-measurements.bash.
christoff-buerger added a commit that referenced this issue Nov 10, 2016
…ror column, indicating exceptions while profiling, to measurement tables. Respectively, make-measurements catches such exceptions. Profiling therefore now is robust; unexpected errors of profiled programs do not disrupt measurement tables and are properly logged.
christoff-buerger added a commit that referenced this issue Nov 12, 2016
… flag to make-measurements; the flag forces the script to fail if any measurement fails. Otherwise, the script executes all measurements, even if one fails.
christoff-buerger added a commit that referenced this issue Nov 15, 2016
christoff-buerger added a commit that referenced this issue Nov 17, 2016
…age comment and error checks to run script for atomic petrinets profiling .
christoff-buerger added a commit that referenced this issue Nov 18, 2016
…ofiling scripts into separate directory (profiling-scripts) and shortened their names (make-measurements.bash -> measure.bash, make-table.bash -> record.bash, parse-profiling-configuration.bash -> configure.bash). The recording script now fixes the measurement table it uses in case the result pipline is premature empty like in case of user aborted measurements (for example via CTRL-C).
christoff-buerger added a commit that referenced this issue Nov 20, 2016
…abled analysis caching as parameter to the atomic petrinets profiling case study; it now can be turned on and off. Likewise, enabled analysis caching can now be triggered for the fUML Activity Diagrams example.
christoff-buerger added a commit that referenced this issue Nov 25, 2016
…tract.bash script, which can be used to extract rows from measurement tables according to constraints (work in progress).
christoff-buerger added a commit that referenced this issue Nov 29, 2016
…progress on extract script; added actual extraction code and split it in static and generated Scheme part.
christoff-buerger added a commit that referenced this issue Dec 3, 2016
…progress on extract script. It now also queries for error status, measurement date and result extraction operators. Several operators can be given for each column. The actual extraction script is generated as a temporary file, automatically deleted when finished.
christoff-buerger added a commit that referenced this issue Dec 3, 2016
…progress on extract script. All global extrema are extracted (if several rows share a global extrema, they are all preserved). Layout of measurement tables simplified to ease automatic processing and generation.
christoff-buerger added a commit that referenced this issue Jan 4, 2017
…rking version of extract script. Duplicated entries are now automatically deleted. Local extrema are considered equal if all their columns, ignoring measurement dates, are the same. This implies, that rows are extracted according to a local extrema, if, and only if, the value of the extrema column of a row is the min/max within the set of all rows whose column values are equal except the measurement date column. Global extrema do not have such a column-uniqueness selection criteria. Rows are extracted according to a global extrema when the value of their respective extrema column is the min/max within the set of ALL rows. In summary, a row is extracted if it satisfies ALL conditions of ALL its columns and, if there are any extrema selectors, has an extrema.
christoff-buerger added a commit that referenced this issue Feb 17, 2017
…g in extraction script regarding the selection of local extrema. Extraction is tested and working. Further, the measurement date is now the first parameter, whereas the status (aborted, failed, succeeded) is the first result; the columns of measurement tables are reordered accordingly.
christoff-buerger added a commit that referenced this issue Sep 16, 2019
…ucture (i.e., everything except visualisation: configuration language, test series generator, measurement browser).
christoff-buerger added a commit that referenced this issue Feb 28, 2020
… least one is given; it now also creates containing directories of the measurements table given via -t flag if such do not exist yet. Recording of measurement results now checks that the table given as target has -- in case it already exists -- a correct header considering the used profiling configuration.
christoff-buerger added a commit that referenced this issue Mar 21, 2020
…ectness w.r.t. the given profiling configuration (since extraction scripts already check all given source tables and recording will always produce correct tables, table integrity is always guaranteed even in in case of measurement abortion, errors or exceptional termination while measuring etc). The golden rule is: Tables are only updated iff everything is correctly configured, i.e., correct execution can be guaranteed, and resulting tables can be guaranteed to satisfy the given configuration.
christoff-buerger added a commit that referenced this issue May 4, 2020
…ew measurements or extraction results; table-integrity can also be checked explicitly via a new 'check-tables.bash' script. In case of errors, tables are never changed.
christoff-buerger added a commit that referenced this issue May 7, 2020
…s and the recording callee is now handled correctly and more robust and not anymore based on 'hopeful long enough sleep times to let the recording finish before killing it'.
christoff-buerger added a commit that referenced this issue May 8, 2020
christoff-buerger added a commit that referenced this issue Mar 12, 2022
…ite the first few elements if there are less than already existing new entries read (in case of measure.bash this was a bug because the array is read in a loop).
christoff-buerger added a commit that referenced this issue Dec 5, 2023
…Thh:mm:ssZ) format; this enables lexical ordering and standard conformant third party processing of dates.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant