{"id":23278533,"url":"https://github.com/hdfgroup/recorder","last_synced_at":"2025-04-06T12:42:15.371Z","repository":{"id":66041915,"uuid":"49695059","full_name":"HDFGroup/Recorder","owner":"HDFGroup","description":"A Multi-Level Library for Understanding I/O Activity in HPC Applications","archived":false,"fork":false,"pushed_at":"2016-01-19T16:59:40.000Z","size":47,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-02-12T18:32:59.072Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.hdfgroup.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HDFGroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-01-15T03:55:55.000Z","updated_at":"2022-01-30T09:10:57.000Z","dependencies_parsed_at":"2023-03-23T12:04:49.466Z","dependency_job_id":null,"html_url":"https://github.com/HDFGroup/Recorder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HDFGroup%2FRecorder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HDFGroup%2FRecorder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HDFGroup%2FRecorder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HDFGroup%2FRecorder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HDFGroup","download_url":"https://codeload.github.com/HDFGroup/Recorder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247485281,"owners_count":20946397,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-19T22:32:10.246Z","updated_at":"2025-04-06T12:42:15.352Z","avatar_url":"https://github.com/HDFGroup.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"Recorder\n========\n**A Multi-Level Library for Understanding I/O Activity in HPC Applications**\n\nWe believe that multi-level I/O tracing and trace data analysis tool can help\nend users understand the behavior of their application and I/O subsystem, and\ncan provide insights into the source of I/O performance bottlenecks.\n\nRecorder is a multi-level I/O tracing framework that can capture I/O function\ncalls at multiple levels of the I/O stack, including HDF5, MPI-IO, and POSIX\nI/O. Recorder requires no modification or recompilation of the application and\nusers can control what levels are traced.\n\n\nPublication\n-----------\n\nFor a full description of the Recorder library please refer to the following\npaper:\n\n[A Multi-Level Approach for Understanding I/O Activity in HPC\nApplications](http://web.engr.illinois.edu/~bbehza2/files/Babak_Behzad_IASDS_2013_paper.pdf)\n\nHuong Vu Thanh Luu, Babak Behzad, Ruth Aydt, Marianne Winslett\n\nShort Paper, Workshop on Interfaces and Abstractions for Scientific Data Storage\n(IASDS 2013), in conjuction with IEEE Cluster 2013.\n\n\nDescription\n-----------\n\nWe chose to build Recorder as a shared library so that it does not require\nmodification or recompilation of the application. Recorder uses function\ninterpositioning to prioritize itself over standard functions, as shown in the\nFigure below. Once Recorder is specified as the preloading library, it\nintercepts HDF5 function calls issued by the application and reroutes them to\nthe tracing implementation where the timestamp, function name, and function\nparameters are recorded. The original HDF5 function is called after this\nrecording process. The mechanism is the same for the MPI and POSIX layers. ![alt\ntext](http://web.engr.illinois.edu/~bbehza2/files/H5Tuner-Design.png \"Dynamic\ninstrumentation of I/O stack by Recorder\")\n\nInstallation\n------------\n\n    ./config.sh /opt/hdf5-1.8.9 /opt/mpich2-1.4.1p1/ -DDISABLE_MPIO_TRACE -DDISABLE_POSIX_TRACE\n    make\n    make install prefix=${HOME}/librecorder\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhdfgroup%2Frecorder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhdfgroup%2Frecorder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhdfgroup%2Frecorder/lists"}