Skip to main content

gym environment simulating file cache.

Project description

gym-cache

OpenAI based Gym environments for training RL caching agent

install it: pip install gym-cache

import it like this:

import gym

gym.make('gym_cache:Cache-v0')

observation space has following variables:

  • six tokens (integers)
  • file size [kB]
  • how full is the cache at that moment

There are two discrete action environments (Cache-v0 and Cache-large-v0) and one continuous action environment (Cache-continuous-v0).

Data extractions and preprocessing

This is a two step procedure:

  • extract raw data data/extract_data.py - change PQ, date range
  • process raw data data/process_data.py - tokenizes filenames, generates unique fileIDs, sorts by access time.

Processed data should be copied to the directory where actor runs. It is a parque file (.pa) with one dataframe:

  • index - access time (sorted)
  • six tokens derived from the filename ('1', '2', '3', '4', '5', '6')
  • filesize ('kB')
  • unique file identifier ('fID')

Rewards

  • always negative and correspond to cost to get the file - if it was cached it will be smaller
  • files are cached irrespectively from what action actor performed for the file
  • cleanup: environment memorizes actions. on cleanup it first deletes files judged not to be needed again (action 0 in discrete environments or smaller values in continues environment). If multiple files have the same action value, LRU one is removed first.

Possible technical implementation in XCache server

  • There are additional containers in the pod.
    • environment container
      • recieves gstream pfc, and disk info
      • recalculates new state, reward, tokenizes recieved gstream info.
      • memorizes last state, actors actions for each file
      • triggers cleanup at lower HWM then xcache itself. Loops through memorized paths and removes ones least probably needed.
    • redis db - used by environment container to store actor responses
    • actor container

Miscalenious

To change environments:

  • clone github repository
  • make changes
  • install locally:
    python -m pip install --user -e . or python setup.py bdist_wheel python -m pip install dist\gym_cache-1.0.1-py3-none-any.whl
  • to upload to pypi repository

    create %USER%.pypirc file first.

    python setup.py bdist_wheel python -m twine upload dist*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

gym_cache-1.0.2-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file gym_cache-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: gym_cache-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.5

File hashes

Hashes for gym_cache-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6dfbf3c9c94f123ed0b77e45be98c4b36b86df5e129f883ed0505f0014acd38a
MD5 afbc61047075c503dfff2317f42f11b7
BLAKE2b-256 348be006caefd6f088046b53e5429fbdf15a16cb6e01a5b9fb011566622e8132

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page