浏览代码

HPCC-9017 Use less kernel page cache for roxie copies

Signed-off-by: Mark Kelly <mark.kelly@lexisnexis.com>
Mark Kelly 11 年之前
父节点
当前提交
0e8c2b0427
共有 4 个文件被更改,包括 10 次插入10 次删除
  1. 3 3
      system/jlib/jfile.cpp
  2. 1 1
      system/jlib/jfile.hpp
  3. 4 4
      system/jlib/jlzw.cpp
  4. 2 2
      system/jlib/jlzw.hpp

+ 3 - 3
system/jlib/jfile.cpp

@@ -1977,9 +1977,9 @@ size32_t CFileIO::write(offset_t pos, size32_t len, const void * data)
         if (atomic_add_and_read(&bytesWritten, ret) >= PGCFLUSH_BLKSIZE)
         {
             atomic_set(&bytesWritten, 0);
-            // non-blocking request to commit dirty pages [or block with fdatasync()]
-            sync_file_range(file, 0, 0, SYNC_FILE_RANGE_WRITE);
-            // flush previously committed dirty pages
+            // [possibly] non-blocking request to write-out dirty pages
+            sync_file_range(file, 0, 0, SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE);
+            // flush written-out pages
             posix_fadvise(file, 0, 0, POSIX_FADV_DONTNEED);
         }
     }

+ 1 - 1
system/jlib/jfile.hpp

@@ -52,7 +52,7 @@ interface IDirectoryIterator : extends IIteratorOf<IFile>
 
 };
 
-#define PGCFLUSH_BLKSIZE      0x200000
+#define PGCFLUSH_BLKSIZE      0x400000
 #define DEFAULT_COPY_BLKSIZE  0x100000
 enum CFflags { CFnone=0x0, CFflush_read=0x1, CFflush_write=0x2, CFflush_rdwr=0x3 };
 

+ 4 - 4
system/jlib/jlzw.cpp

@@ -2186,7 +2186,7 @@ ICompressedFileIO *createCompressedFileReader(IFileIO *fileio,IExpander *expande
 }
 
 
-ICompressedFileIO *createCompressedFileReader(IFile *file,IExpander *expander, bool memorymapped)
+ICompressedFileIO *createCompressedFileReader(IFile *file,IExpander *expander, bool memorymapped, IFEflags extraFlags)
 {
     if (file) {
         if (memorymapped) {
@@ -2208,7 +2208,7 @@ ICompressedFileIO *createCompressedFileReader(IFile *file,IExpander *expander, b
                 }
             }
         }
-        Owned<IFileIO> fileio = file->open(IFOread);
+        Owned<IFileIO> fileio = file->open(IFOread, extraFlags);
         if (fileio) 
             return createCompressedFileReader(fileio,expander);
     }
@@ -2252,12 +2252,12 @@ ICompressedFileIO *createCompressedFileWriter(IFileIO *fileio,size32_t recordsiz
     return cfile;
 }
 
-ICompressedFileIO *createCompressedFileWriter(IFile *file,size32_t recordsize,bool append,bool _setcrc,ICompressor *compressor,bool fast)
+ICompressedFileIO *createCompressedFileWriter(IFile *file,size32_t recordsize,bool append,bool _setcrc,ICompressor *compressor,bool fast, IFEflags extraFlags)
 {
     if (file) {
         if (append&&!file->exists())
             append = false;
-        Owned<IFileIO> fileio = file->open(append?IFOreadwrite:IFOcreate);
+        Owned<IFileIO> fileio = file->open(append?IFOreadwrite:IFOcreate, extraFlags);
         if (fileio) 
             return createCompressedFileWriter(fileio,recordsize,_setcrc,compressor,fast);
     }

+ 2 - 2
system/jlib/jlzw.hpp

@@ -108,9 +108,9 @@ interface ICompressedFileIO: extends IFileIO
     virtual unsigned method()=0;
 };
 
-extern jlib_decl ICompressedFileIO *createCompressedFileReader(IFile *file,IExpander *expander=NULL, bool memorymapped=false);
+extern jlib_decl ICompressedFileIO *createCompressedFileReader(IFile *file,IExpander *expander=NULL, bool memorymapped=false, IFEflags extraFlags=IFEnone);
 extern jlib_decl ICompressedFileIO *createCompressedFileReader(IFileIO *fileio,IExpander *expander=NULL);
-extern jlib_decl ICompressedFileIO *createCompressedFileWriter(IFile *file,size32_t recordsize,bool append=false,bool setcrc=true,ICompressor *compressor=NULL,bool fast=false);
+extern jlib_decl ICompressedFileIO *createCompressedFileWriter(IFile *file,size32_t recordsize,bool append=false,bool setcrc=true,ICompressor *compressor=NULL,bool fast=false, IFEflags extraFlags=IFEnone);
 extern jlib_decl ICompressedFileIO *createCompressedFileWriter(IFileIO *fileio,size32_t recordsize,bool setcrc=true,ICompressor *compressor=NULL,bool fast=false);
 
 #define COMPRESSEDFILECRC (~0U)