microsoft / microsoft/vasim

Improve processing of data to be scalable

Open
#93 0 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

refactor
Dominant language
Python
Stars
12
Forks
11
Avg merge
7d 23h
Merged PRs (30d)
3

Description

The SimulatedBaseClusterStateProvider requires an abstract method, process_data, to be implemented by child classes. Some of those child classes have implemented that method by reading the entire csv file. While this works, it is not scalable and can potentially have issues when data contained in *perf_event_log.csv file grows large. For an example, see https://github.com/microsoft/vasim/blob/main/src/vasim/recommender/cluster_state_provider/FileClusterStateProvider.py#L153C25-L153C26.

Task: Improve process_data methods under all the *ClusterStateProvider classes to be scalable as the size of the log files grows. Some techniques to explore scalability are:

  • Chunking: Read the CSV file in chunks instead of loading the entire file into memory.
  • Parallel Processing: Use parallel processing to read and process multiple chunks simultaneously.
  • Efficient Libraries: Use efficient libraries like pandas for data manipulation and dask for parallel computing.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the abstract process_data method on SimulatedBaseClusterStateProvider and the implementation in src/vasim/recommender/cluster_state_provider/FileClusterStateProvider.py around line 153. Inspect the process_data methods in all *ClusterStateProvider classes and compare how they read *perf_event_log.csv files. Done means the implementations remain usable as those logs grow without loading the entire file into memory.

Written by the indexing model from the issue text.

Assessment

Tech stack
pandas, python
Domain
backend, data-engineering, performance
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.