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.3-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gym_cache-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 12.2 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4e266c41a2495f1b513be7b830ab06664fa086c283a394196ce46dbaf183dcce
MD5 943697edc3d4c4f80132975b04d6391a
BLAKE2b-256 8ec0527bf73d500f1301f82e2644ac3df829f8608423d099232e5bfa57571b34

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