@ -9,10 +9,36 @@
namespace ROCKSDB_NAMESPACE {
IOStatus FileSystemTracingWrapper : : NewSequentialFile (
const std : : string & fname , const FileOptions & file_opts ,
std : : unique_ptr < FSSequentialFile > * result , IODebugContext * dbg ) {
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > NewSequentialFile ( fname , file_opts , result , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
IOTraceRecord io_record ( env_ - > NowNanos ( ) , TraceType : : kIOFileName , __func__ ,
elapsed , s . ToString ( ) , fname ) ;
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
IOStatus FileSystemTracingWrapper : : NewRandomAccessFile (
const std : : string & fname , const FileOptions & file_opts ,
std : : unique_ptr < FSRandomAccessFile > * result , IODebugContext * dbg ) {
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > NewRandomAccessFile ( fname , file_opts , result , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
IOTraceRecord io_record ( env_ - > NowNanos ( ) , TraceType : : kIOFileName , __func__ ,
elapsed , s . ToString ( ) , fname ) ;
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
IOStatus FileSystemTracingWrapper : : NewWritableFile (
const std : : string & fname , const FileOptions & file_opts ,
std : : unique_ptr < FSWritableFile > * result , IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > NewWritableFile ( fname , file_opts , result , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -22,10 +48,51 @@ IOStatus FileSystemTracingWrapper::NewWritableFile(
return s ;
}
IOStatus FileSystemTracingWrapper : : ReopenWritableFile (
const std : : string & fname , const FileOptions & file_opts ,
std : : unique_ptr < FSWritableFile > * result , IODebugContext * dbg ) {
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > ReopenWritableFile ( fname , file_opts , result , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
IOTraceRecord io_record ( env_ - > NowNanos ( ) , TraceType : : kIOFileName , __func__ ,
elapsed , s . ToString ( ) , fname ) ;
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
IOStatus FileSystemTracingWrapper : : ReuseWritableFile (
const std : : string & fname , const std : : string & old_fname ,
const FileOptions & file_opts , std : : unique_ptr < FSWritableFile > * result ,
IODebugContext * dbg ) {
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s =
target ( ) - > ReuseWritableFile ( fname , old_fname , file_opts , result , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
IOTraceRecord io_record ( env_ - > NowNanos ( ) , TraceType : : kIOFileName , __func__ ,
elapsed , s . ToString ( ) , fname ) ;
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
IOStatus FileSystemTracingWrapper : : NewRandomRWFile (
const std : : string & fname , const FileOptions & file_opts ,
std : : unique_ptr < FSRandomRWFile > * result , IODebugContext * dbg ) {
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > NewRandomRWFile ( fname , file_opts , result , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
IOTraceRecord io_record ( env_ - > NowNanos ( ) , TraceType : : kIOFileName , __func__ ,
elapsed , s . ToString ( ) , fname ) ;
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
IOStatus FileSystemTracingWrapper : : NewDirectory (
const std : : string & name , const IOOptions & io_opts ,
std : : unique_ptr < FSDirectory > * result , IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > NewDirectory ( name , io_opts , result , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -39,7 +106,7 @@ IOStatus FileSystemTracingWrapper::GetChildren(const std::string& dir,
const IOOptions & io_opts ,
std : : vector < std : : string > * r ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > GetChildren ( dir , io_opts , r , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -52,7 +119,7 @@ IOStatus FileSystemTracingWrapper::GetChildren(const std::string& dir,
IOStatus FileSystemTracingWrapper : : DeleteFile ( const std : : string & fname ,
const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > DeleteFile ( fname , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -65,7 +132,7 @@ IOStatus FileSystemTracingWrapper::DeleteFile(const std::string& fname,
IOStatus FileSystemTracingWrapper : : CreateDir ( const std : : string & dirname ,
const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > CreateDir ( dirname , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -77,7 +144,7 @@ IOStatus FileSystemTracingWrapper::CreateDir(const std::string& dirname,
IOStatus FileSystemTracingWrapper : : CreateDirIfMissing (
const std : : string & dirname , const IOOptions & options , IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > CreateDirIfMissing ( dirname , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -90,7 +157,7 @@ IOStatus FileSystemTracingWrapper::CreateDirIfMissing(
IOStatus FileSystemTracingWrapper : : DeleteDir ( const std : : string & dirname ,
const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > DeleteDir ( dirname , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -104,7 +171,7 @@ IOStatus FileSystemTracingWrapper::GetFileSize(const std::string& fname,
const IOOptions & options ,
uint64_t * file_size ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > GetFileSize ( fname , options , file_size , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -114,11 +181,25 @@ IOStatus FileSystemTracingWrapper::GetFileSize(const std::string& fname,
return s ;
}
IOStatus FileSystemTracingWrapper : : Truncate ( const std : : string & fname ,
size_t size ,
const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Truncate ( fname , size , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
IOTraceRecord io_record ( env_ - > NowNanos ( ) , TraceType : : kIOFileNameAndFileSize ,
__func__ , elapsed , s . ToString ( ) , fname , size ) ;
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
IOStatus FSSequentialFileTracingWrapper : : Read ( size_t n ,
const IOOptions & options ,
Slice * result , char * scratch ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Read ( n , options , result , scratch , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -130,7 +211,7 @@ IOStatus FSSequentialFileTracingWrapper::Read(size_t n,
IOStatus FSSequentialFileTracingWrapper : : InvalidateCache ( size_t offset ,
size_t length ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > InvalidateCache ( offset , length ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -143,7 +224,7 @@ IOStatus FSSequentialFileTracingWrapper::InvalidateCache(size_t offset,
IOStatus FSSequentialFileTracingWrapper : : PositionedRead (
uint64_t offset , size_t n , const IOOptions & options , Slice * result ,
char * scratch , IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s =
target ( ) - > PositionedRead ( offset , n , options , result , scratch , dbg ) ;
@ -159,7 +240,7 @@ IOStatus FSRandomAccessFileTracingWrapper::Read(uint64_t offset, size_t n,
const IOOptions & options ,
Slice * result , char * scratch ,
IODebugContext * dbg ) const {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Read ( offset , n , options , result , scratch , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -173,7 +254,7 @@ IOStatus FSRandomAccessFileTracingWrapper::MultiRead(FSReadRequest* reqs,
size_t num_reqs ,
const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > MultiRead ( reqs , num_reqs , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -190,7 +271,7 @@ IOStatus FSRandomAccessFileTracingWrapper::MultiRead(FSReadRequest* reqs,
IOStatus FSRandomAccessFileTracingWrapper : : Prefetch ( uint64_t offset , size_t n ,
const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Prefetch ( offset , n , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -202,7 +283,7 @@ IOStatus FSRandomAccessFileTracingWrapper::Prefetch(uint64_t offset, size_t n,
IOStatus FSRandomAccessFileTracingWrapper : : InvalidateCache ( size_t offset ,
size_t length ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > InvalidateCache ( offset , length ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -216,7 +297,7 @@ IOStatus FSRandomAccessFileTracingWrapper::InvalidateCache(size_t offset,
IOStatus FSWritableFileTracingWrapper : : Append ( const Slice & data ,
const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Append ( data , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -229,7 +310,7 @@ IOStatus FSWritableFileTracingWrapper::Append(const Slice& data,
IOStatus FSWritableFileTracingWrapper : : PositionedAppend (
const Slice & data , uint64_t offset , const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > PositionedAppend ( data , offset , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -242,7 +323,7 @@ IOStatus FSWritableFileTracingWrapper::PositionedAppend(
IOStatus FSWritableFileTracingWrapper : : Truncate ( uint64_t size ,
const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Truncate ( size , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -254,7 +335,7 @@ IOStatus FSWritableFileTracingWrapper::Truncate(uint64_t size,
IOStatus FSWritableFileTracingWrapper : : Close ( const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Close ( options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -266,7 +347,7 @@ IOStatus FSWritableFileTracingWrapper::Close(const IOOptions& options,
uint64_t FSWritableFileTracingWrapper : : GetFileSize ( const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
uint64_t file_size = target ( ) - > GetFileSize ( options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -279,7 +360,7 @@ uint64_t FSWritableFileTracingWrapper::GetFileSize(const IOOptions& options,
IOStatus FSWritableFileTracingWrapper : : InvalidateCache ( size_t offset ,
size_t length ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > InvalidateCache ( offset , length ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -293,7 +374,7 @@ IOStatus FSWritableFileTracingWrapper::InvalidateCache(size_t offset,
IOStatus FSRandomRWFileTracingWrapper : : Write ( uint64_t offset , const Slice & data ,
const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Write ( offset , data , options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -307,7 +388,7 @@ IOStatus FSRandomRWFileTracingWrapper::Read(uint64_t offset, size_t n,
const IOOptions & options ,
Slice * result , char * scratch ,
IODebugContext * dbg ) const {
StopWatchNano timer ( Env : : Default ( ) ) ;
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Read ( offset , n , options , result , scratch , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
@ -316,4 +397,52 @@ IOStatus FSRandomRWFileTracingWrapper::Read(uint64_t offset, size_t n,
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
IOStatus FSRandomRWFileTracingWrapper : : Flush ( const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Flush ( options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
IOTraceRecord io_record ( env_ - > NowNanos ( ) , TraceType : : kIOGeneral , __func__ ,
elapsed , s . ToString ( ) ) ;
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
IOStatus FSRandomRWFileTracingWrapper : : Close ( const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Close ( options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
IOTraceRecord io_record ( env_ - > NowNanos ( ) , TraceType : : kIOGeneral , __func__ ,
elapsed , s . ToString ( ) ) ;
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
IOStatus FSRandomRWFileTracingWrapper : : Sync ( const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Sync ( options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
IOTraceRecord io_record ( env_ - > NowNanos ( ) , TraceType : : kIOGeneral , __func__ ,
elapsed , s . ToString ( ) ) ;
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
IOStatus FSRandomRWFileTracingWrapper : : Fsync ( const IOOptions & options ,
IODebugContext * dbg ) {
StopWatchNano timer ( env_ ) ;
timer . Start ( ) ;
IOStatus s = target ( ) - > Fsync ( options , dbg ) ;
uint64_t elapsed = timer . ElapsedNanos ( ) ;
IOTraceRecord io_record ( env_ - > NowNanos ( ) , TraceType : : kIOGeneral , __func__ ,
elapsed , s . ToString ( ) ) ;
io_tracer_ - > WriteIOOp ( io_record ) ;
return s ;
}
} // namespace ROCKSDB_NAMESPACE