Hermes  0.9.5-beta
Hierarchical Distributed I/O Buffering System
buffer_pool.h File Reference
#include <assert.h>
#include <stddef.h>
#include <stdio.h>
#include <atomic>
#include <string>
#include <utility>
#include <vector>
#include "communication.h"
#include "hermes_status.h"
#include "hermes_types.h"
#include "memory_management.h"
Include dependency graph for buffer_pool.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  hermes::Device
 
struct  hermes::Target
 
union  hermes::BufferID
 
struct  hermes::BufferIdHash
 
struct  hermes::ShmemClientInfo
 
struct  hermes::BufferHeader
 
struct  hermes::BufferPool
 
struct  hermes::SharedMemoryContext
 
struct  hermes::Blob
 
struct  hermes::SwapBlob
 

Namespaces

 hermes
 

Enumerations

enum  hermes::SwapBlobMembers {
  SwapBlobMembers_NodeId , SwapBlobMembers_Offset , SwapBlobMembers_Size , SwapBlobMembers_BucketId ,
  SwapBlobMembers_Count
}
 

Functions

bool hermes::operator== (const BufferID &lhs, const BufferID &rhs)
 
size_t hermes::GetBlobSize (SharedMemoryContext *context, RpcContext *rpc, BufferIdArray *buffer_ids)
 
size_t hermes::GetBlobSizeById (SharedMemoryContext *context, RpcContext *rpc, Arena *arena, BlobID blob_id)
 
f32 hermes::GetBlobImportanceScore (SharedMemoryContext *context, RpcContext *rpc, BlobID blob_id)
 
void hermes::MakeFullShmemName (char *dest, const char *base)
 
void hermes::InitFilesForBuffering (SharedMemoryContext *context, CommunicationContext &comm)
 
SharedMemoryContext hermes::GetSharedMemoryContext (char *shmem_name)
 
void hermes::ReleaseSharedMemoryContext (SharedMemoryContext *context)
 
void hermes::UnmapSharedMemory (SharedMemoryContext *context)
 
std::vector< BufferID > hermes::GetBuffers (SharedMemoryContext *context, const PlacementSchema &schema)
 
void hermes::ReleaseBuffers (SharedMemoryContext *context, RpcContext *rpc, const std::vector< BufferID > &buffer_ids)
 
void hermes::StartBufferPoolRpcServer (SharedMemoryContext *context, const char *addr, i32 num_rpc_threads)
 
void hermes::Finalize (SharedMemoryContext *context, CommunicationContext *comm, RpcContext *rpc, const char *shmem_name, Arena *trans_arena, bool is_application_core, bool force_rpc_shutdown)
 
void hermes::WriteBlobToBuffers (SharedMemoryContext *context, RpcContext *rpc, const Blob &blob, const std::vector< BufferID > &buffer_ids)
 
size_t hermes::ReadBlobFromBuffers (SharedMemoryContext *context, RpcContext *rpc, Blob *blob, BufferIdArray *buffer_ids, u32 *buffer_sizes)
 
size_t hermes::ReadBlobById (SharedMemoryContext *context, RpcContext *rpc, Arena *arena, Blob blob, BlobID blob_id)
 
size_t hermes::ReadBlobById (SharedMemoryContext *context, RpcContext *rpc, Arena *arena, api::Blob &dest, BlobID blob_id)
 
size_t hermes::LocalWriteBufferById (SharedMemoryContext *context, BufferID id, const Blob &blob, size_t offset)
 
size_t hermes::LocalReadBufferById (SharedMemoryContext *context, BufferID id, Blob *blob, size_t read_offset)
 
SwapBlob hermes::PutToSwap (SharedMemoryContext *context, RpcContext *rpc, const std::string &name, BucketID bucket_id, const u8 *data, size_t size)
 
template<typename T >
std::vector< SwapBlob > hermes::PutToSwap (SharedMemoryContext *context, RpcContext *rpc, BucketID id, std::vector< std::vector< T >> &blobs, std::vector< std::string > &names)
 
SwapBlob hermes::WriteToSwap (SharedMemoryContext *context, Blob blob, BlobID blob_id, BucketID bucket_id)
 
size_t hermes::ReadFromSwap (SharedMemoryContext *context, Blob blob, SwapBlob swap_blob)
 
std::vector< f32 > hermes::GetBandwidths (SharedMemoryContext *context, const std::vector< TargetID > &targets)
 
u32 hermes::GetNumBuffersAvailable (SharedMemoryContext *context, DeviceID device_id)
 
u32 hermes::GetBufferSize (SharedMemoryContext *context, RpcContext *rpc, BufferID id)
 
bool hermes::BufferIsByteAddressable (SharedMemoryContext *context, BufferID id)
 
Status hermes::PlaceInHierarchy (SharedMemoryContext *context, RpcContext *rpc, SwapBlob swap_blob, const std::string &name, const api::Context &ctx)
 
api::Status hermes::PlaceBlob (SharedMemoryContext *context, RpcContext *rpc, PlacementSchema &schema, Blob blob, const std::string &name, BucketID bucket_id, const api::Context &ctx, bool called_from_buffer_organizer)
 
api::Status hermes::StdIoPersistBucket (SharedMemoryContext *context, RpcContext *rpc, Arena *arena, BucketID bucket_id, const std::string &file_name, const std::string &open_mode)
 
api::Status hermes::StdIoPersistBlob (SharedMemoryContext *context, RpcContext *rpc, Arena *arena, BlobID blob_id, int fd, const i32 &offset)
 
Device * hermes::GetDeviceFromHeader (SharedMemoryContext *context, BufferHeader *header)
 

Detailed Description

The public structures and functions for interacting with the BufferPool as a client. The interface includes hermes-specific application core intialization, and the API through which the RoundRobin DPE and BufferOrganizer interact with the BufferPool.