Skip to content

Cache Env #9

Description

@hashbrown512

Hi, I have a few questions about the cache environment.

I can submit fixes, but I wanted to see if there was another version of the environment first. Is the environment that is currently on GitHub what was used in the Park paper evaluation?

The park cache environment will crash during execution. The provided test traces are numbered 0 to 999 and the random integer in reset(low = 1, high = 1001) can be between 1 and 1000.

    def reset(self, low=1, high=1001):
        new_trace = self.np_random.randint(low, high)

Objects that have never been seen before are assigned a last request time of 500. What is the reasoning behind assigning this constant for the time?

    def get_state(self, obj=[0, 0, 0, 0]):
        '''
        Return the state of the object,  [obj_size, cache_size_online_remain, self.last_req_time_dict[obj_id]]
        '''
        obj_time, obj_id, obj_size = obj[0], obj[1], obj[2]
        try:
            req = self.req - self.cache[obj_id][1]
        except IndexError:
            try:
                req = self.req - self.non_cache[obj_id][1]
            except IndexError:
                req = 500
        state = [obj_size, self.cache_remain, req]
def step(self, action, obj):
....
        # Initialize the last request time
        try:
            self.last_req_time_dict[obj_id] = req - self.cache[obj[1]][1]
        except IndexError:
            try:
                self.last_req_time_dict[obj_id] = req - self.non_cache[obj[1]][1]
            except IndexError:
                self.last_req_time_dict[obj_id] = 500

The Park paper states that you use an open dataset containing 500 million requests. When running the environment with trace = real, it deterministically starts at the beginning of the trace to continue for 500 million requests, and it is not chunked into different episodes like 'test' traces. Is this intended for evaluation purposes?

The Park paper additionally states that the cache environment supports training an eviction agent together with the admission agent. Is there code for this available? It looks like this isn’t implemented in the repo. No worries at all if this wasn't completed.

Thanks for the help!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions