Conversation
…#15) * build: add format target to cmake * ci: add github workflow for build & formatting * test(agent): add NVML stub for CI environments Introduced a dummy implementation of NVML functions (Init, Shutdown,DeviceGetHandle, etc.) to allow the agent to compile and link successfully on CI runners (Ubuntu) where NVIDIA drivers are missing. This stub is conditionally linked via CMake when the system NVML library is not found. * style(agent): reformat agent codebase to pass CI Agent check * chore: add reformat commit to ignore-revs, fix cmake to check google format, clean agent ci
…22) * setup VCPKG deps, prepare cmake preset profile * descibe compilation pipeline * fix workflow issues
…everytime it changes
[Agent] Config file, binding execution to specific cores and minor bug fix
* add utility functions * feat(agent): interval, server address and server port configuration in the config file * add namespace * feat(agent): reading hardware and collectors * feat(agent): checking and logging any incorrect keys in the config file, move config loading functionality into separate functions * chore: correct format * chore(agent): add commits that correct format to blame ignore * feat(agent): create UUID and save to file, load after each startup * style(agent): correct format * chore(agent): add style commit to blame ignore
…akeLists and automatic hook copying when building
* chore: setup helix editor configs && update .gitignore * feat(agent): add minimal intel RAPL collector * feat: implement core detection and improve error handling * fix: MSR read exception condition * fix: formatting * fix: formating 2 * fix: formatting pls work * Apply suggestions from code review Co-authored-by: Kacper Doga <doga.kacper@gmail.com> * fix: core ordering --------- Co-authored-by: Kacper Doga <doga.kacper@gmail.com>
This pull request introduces a significant refactor and extension of the agent's metrics collection subsystem. The main changes implement a registry-based collector system, unify and extend the collector interface, and add support for dynamically selecting and configuring metrics at startup via config * wip: metric refactor * chore: add sources/agent/build/* to .gitingore * wip: refactored proc stat collector * refactor: Moved MetricType to volta.proto * refactor: fix the MetricType namespacing * feat: Collector registry implementation * feat: implement loading metrics from config * ci: fix agent path glob * fix: ignore generated code in CI checks & fix warnings in rapl collector --------- Co-authored-by: Patryk Przybysz <142999806+patryk-przybysz@users.noreply.github.com>
* change protobuf package name * feat: define deviceID messages in the protobuf and update the service to stream metrics to the server * feat: update metric's deviceID to use protobuf generated types && refactor collectors accordingly * fix: update CMakeLists.txt to resolve nvml correctly * feat: implement basic buffer with fixed capacity && update scheduler to use it * add configuration for buffer capacity && fix active monitor layout * finalize protocol * feat: add thread guards to the buffer && update the buffer's interface * make const methods aquire shared_lock && make the map store a shared_ptr of series buffers * fix: update CmakeLists.txt to discover NVML correclty. * fix: fix minor bugs && update nvml_stub * fix: SeriesBuffer::Latest() now also returns if the latest metric was sent.
… gRPC client (#32) * chore(server): initial structure and grpc dependencies * chore(server): makefile for generating proto for the server * chore: updated gitignore * chore(server): delete generated folder * feat(server): config file support for the server * feat: example grpc communication between agent and server * feat: async grpc communication * feat: handling multiple agents * feat: server logger, corrected paths after project structure refactor * ci: hooks target to symlink pre-commit script to .git/hooks, server github actions ci, modified pre-commit script to check server code formatting * feat(server): grpc message handling * feat: IMessageHandler interface for the client, queue based writing and interval pinging * feat: metric streaming from the client to the server * feat: uuid generation on the server and saving locally on the agent, move PrintCurrentAffinity to utils, move UUID saving and loading to Client, remove UUID creation from the agent * feat: separate proto types from services, as not every service will need everything * feat: REST API gateway running on the server with one endpoint for listing connected agents * feat: refactor server architecture * feat: http server, agent - server handshake, api endpoints * feat: metrics streaming from agent to server, but not fully working * feat: working agent - server metrics streaming with rest and WS endpoints; default CMake preset is now Debug build type * ci: generate go files from proto before running go vet * fix: agent doesn't crash when server is not available, agent now calls AckSnapshot on the buffer to release already sent metrics * fix: mark all child classes as final, so that the cppcheck tools, doesn't mark overriden functions as virtual functions when called from constructor * fix: remove plaform detector from main --------- Co-authored-by: FW-Nagorko <fil.wolinski@gmail.com>
* feat(dashboard): initialize vite project * feat(dashboard): add tailwindcss, simplify config * feat(dashboard): add shadcn-ui * fix(agent): emit CPU metric timestamp in nanoseconds * feat(server): add CORS middleware to HTTP API * feat(dashboard): live metrics dashboard * chore(dashboard): disable react/only-export-components rule * style(dashboard): reformat code * docs(dashboard): update README
* feat: add a flag to the scheduler that enables printing a local dashboard when opening a channel to the server fails * fix(agent): correct fallback log message [skip ci] --------- Co-authored-by: Patryk Przybysz <pprzybysz04@outlook.com>
* feat(dashboard): show exact metric values on hover * refactor(dashboard): restructure and split modules * style: fix formatting
* feat(server): restrict CORS to configured origins * fix(server): bind CORS origins via env and flag The initial config used rest.allowed_origins / --rest.allowed-origins, which did not map to koanf paths. Rename to rest.origins so env and CLI overrides work. * style: fix formatting
* feat: basic exporter implementation * feat: add message queue for IPC * feat: add cli mode to the agent and add commands to start and end a dump * cosmetic: change volta export end command is now volta export stop * fix: change MessageQueue constructor to take in opts as const reference
* chore(server): initial structure and grpc dependencies * chore(server): makefile for generating proto for the server * chore: updated gitignore * chore(server): delete generated folder * feat(server): config file support for the server * feat: example grpc communication between agent and server * feat: async grpc communication * feat: handling multiple agents * feat: server logger, corrected paths after project structure refactor * ci: hooks target to symlink pre-commit script to .git/hooks, server github actions ci, modified pre-commit script to check server code formatting * feat(server): grpc message handling * feat: IMessageHandler interface for the client, queue based writing and interval pinging * feat: metric streaming from the client to the server * feat: uuid generation on the server and saving locally on the agent, move PrintCurrentAffinity to utils, move UUID saving and loading to Client, remove UUID creation from the agent * feat: separate proto types from services, as not every service will need everything * feat: REST API gateway running on the server with one endpoint for listing connected agents * feat: refactor server architecture * feat: http server, agent - server handshake, api endpoints * feat: metrics streaming from agent to server, but not fully working * feat: working agent - server metrics streaming with rest and WS endpoints; default CMake preset is now Debug build type * ci: generate go files from proto before running go vet * fix: agent doesn't crash when server is not available, agent now calls AckSnapshot on the buffer to release already sent metrics * fix: mark all child classes as final, so that the cppcheck tools, doesn't mark overriden functions as virtual functions when called from constructor * format: correct format
* chore: fix .helix/languages.toml config * fix: change the rapl_collector to use /sys/class/powercap interface instead of msr. * fix: ensure proper duration casts for timestamps. * fix: remove unnecessary cin.get() * fix: nvml_collector now detects and collects metrics for all present gpus * fix: rapl_collector::IsSupported() now also checks if the files are readable * format: correct format --------- Co-authored-by: kox13 <89857026+kox13@users.noreply.github.com> Co-authored-by: kox13 <woloszyndawid99@gmail.com>
This reverts commit d9507e0.
* move agent readme into sources/agent/README.md * docs: create server README and update project README; delete unused make targets and move server only targets to sources/server * docs: delete duplicate information in main README that's already in component specific READMEs * fix: wrong make target in server_ci.yml --------- Co-authored-by: FW-Nagorko <fil.wolinski@gmail.com> Co-authored-by: kox13 <woloszyndawid99@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a comprehensive repository reorganization and lays the groundwork for robust CI/CD and development practices for the Volta project. It adds independent CI workflows for each main component (Agent, Server, Dashboard), configures language tooling, and documents the architecture and development process. Several obsolete or relocated files are removed as part of the cleanup.
Key changes:
Continuous Integration & Automation
Agent(.github/workflows/agent_ci.yml),Server(.github/workflows/server_ci.yml), andDashboard(.github/workflows/dashboard_ci.yml) to lint, build, test, and (for the dashboard) deploy components independently on relevant changes. [1] [2] [3]scripts/hooks/pre-commit) and aMakefiletarget to install it, ensuring C++ and Go code is properly formatted before commits. [1] [2]Documentation & Project Structure
README.mdto clearly explain the Volta architecture, repository structure, component responsibilities, and development setup.Codebase Cleanup
CMakeLists.txt, agent-specific CMake, and source code for collectors and proto definitions that have moved or are now managed elsewhere. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]This restructuring sets up the project for scalable, independent development and deployment of each component, and enforces code quality standards across the stack.