OmniSciDB  a5dc49c757
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ExecutorResourceMgr.h File Reference
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <mutex>
#include <set>
#include <shared_mutex>
#include "ExecutorResourceMgrCommon.h"
#include "ExecutorResourcePool.h"
#include "OutstandingQueueRequests.h"
+ Include dependency graph for ExecutorResourceMgr.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ExecutorResourceMgr_Namespace::ExecutorStats
 Stores current key statistics relating to ExecutorResourceMgr state, particularly around the number of requests in queue and currently executing. More...
 
struct  ExecutorResourceMgr_Namespace::RequestStats
 Stores info pertaining to a single request made to ExecutorResourceMgr, including its request_id, min and max possible resource grants, actual resource_grant, and various timing stats. More...
 
class  ExecutorResourceMgr_Namespace::ExecutorResourceMgr
 ExecutorResourceMgr is the central manager for resources available to all executors in the system. It manages an ExecutorResourcePool to keep track of available and allocated resources (currently CPU slots/threads, GPUs, CPU result memory, and CPU and GPU buffer pool memory). It also manages a thread queue which keeps requesting threads (from Executor::launchKernelsViaResourceMgr) waiting until there it can schedule them. At that point, it gives the calling executor thread a ResourceHandle detailing the resources granted to the query, which once it goes out of scope will return the granted resources to the ExecutorResourcePool. More...
 
class  ExecutorResourceMgr_Namespace::ExecutorResourceHandle
 A wrapper returned by ExecutorResourceMgr to the requestee, containing the ResourceGrant that was granted. When this class goes out of scope (i.e. the executing thread finishes its query step, the destructor will automatically instruct ExecutorResourceMgr to release the granted resources back to the ExecutorResourcePool. More...
 

Namespaces

 ExecutorResourceMgr_Namespace
 

Enumerations

enum  ExecutorResourceMgr_Namespace::ExecutionRequestStage { ExecutorResourceMgr_Namespace::QUEUED, ExecutorResourceMgr_Namespace::EXECUTING }
 

Functions

std::shared_ptr
< ExecutorResourceMgr > 
ExecutorResourceMgr_Namespace::generate_executor_resource_mgr (const size_t num_cpu_slots, const size_t num_gpu_slots, const size_t cpu_result_mem, const size_t cpu_buffer_pool_mem, const size_t gpu_buffer_pool_mem, const double per_query_max_cpu_slots_ratio, const double per_query_max_cpu_result_mem_ratio, const double per_query_max_pinned_cpu_buffer_pool_mem_ratio, const double per_query_max_pageable_cpu_buffer_pool_mem_ratio, const bool allow_cpu_kernel_concurrency, const bool allow_cpu_gpu_kernel_concurrency, const bool allow_cpu_slot_oversubscription_concurrency, const bool allow_gpu_slot_oversubscription, const bool allow_cpu_result_mem_oversubscription_concurrency, const double max_available_resource_use_ratio)
 Convenience factory-esque method that allows us to use the same logic to generate an ExecutorResourceMgr both internally and for ExecutorResourceMgr tests. More...