So for memory mapped files, compaction can do a madvise SEQUENTIAL instead of current DONTNEED flag after detecting appropriate OS versions. Will this help?

AFAIK Compaction does use memory mapped file access. 

Cheers

-----------------
Aaron Morton
Freelance Cassandra Developer
New Zealand

@aaronmorton

On 6/12/2012, at 7:48 PM, Ravikumar Govindarajan <ravikumar.govindarajan@gmail.com> wrote:

Thanks Aaron,

I found the implementation in CLibrary.trySkipCache() method which uses fadvise DONTNEED flag after going through https://issues.apache.org/jira/browse/CASSANDRA-1470

I also came across the link mentioned in JIRA http://blog.mikemccandless.com/2010/06/lucene-and-fadvisemadvise.html?showComment=1303235497682#c2572106601600642254

which says 2.6.29 version above has implemented madvise SEQUENTIAL in a better manner.

So for memory mapped files, compaction can do a madvise SEQUENTIAL instead of current DONTNEED flag after detecting appropriate OS versions. Will this help?

--
Ravi

On Thu, Dec 6, 2012 at 8:19 AM, aaron morton <aaron@thelastpickle.com> wrote:
Background http://en.wikipedia.org/wiki/Memory-mapped_file

Is it going to load only relevant pages per SSTable on read or is it going to load an entire SSTable on first access?
It will load what is requested, and maybe some additional data taking into account the amount of memory available for caches. 

Say suppose compaction kicks in. Will it then evict hot MMapped pages for read and substitute it with a lot of pages involving full SSTables?
Some file access in cassandra, such as compaction, hints to the OS that the reads should not be cached. Technically is uses posix_fadvise if you want to look it up.

Cheers


-----------------
Aaron Morton
Freelance Cassandra Developer
New Zealand

@aaronmorton

On 5/12/2012, at 11:04 PM, Ravikumar Govindarajan <ravikumar.govindarajan@gmail.com> wrote:

Thanks Aaron,

I am not quite clear on how MMap loads SSTables other than the fact that it kicks in only during a first-time access

Is it going to load only relevant pages per SSTable on read or is it going to load an entire SSTable on first access?

Say suppose compaction kicks in. Will it then evict hot MMapped pages for read and substitute it with a lot of pages involving full SSTables?

--
Ravi

On Wed, Dec 5, 2012 at 1:22 AM, aaron morton <aaron@thelastpickle.com> wrote:
Will MMapping data files be detrimental for reads, in this case?
No. 

In general, when should we opt for MMap data files and what are the factors that need special attention when enabling the same?
mmapping is the default, so I would say use it until you have a reason not to. 

mmapping will map the entire file, but pages of data are read into memory on demand and purged when space is needed. 

Cheers

-----------------
Aaron Morton
Freelance Cassandra Developer
New Zealand

@aaronmorton

On 4/12/2012, at 11:59 PM, Ravikumar Govindarajan <ravikumar.govindarajan@gmail.com> wrote:

Our current SSTable sizes are far greater than RAM. {150 Gigs of data, 32GB RAM}. Currently we run with mlockall and mmap_index_only options and don't experience swapping at all.

We use wide rows and size-tiered-compaction, so a given key will definitely be spread across multiple sstables. Will MMapping data files be detrimental for reads, in this case?

In general, when should we opt for MMap data files and what are the factors that need special attention when enabling the same?

--
Ravi