Hi John,

Entry level locks still exist. I've described locks coming from page
memory, page memory and its locks is lower-level abstraction than entries

Segment is part of region consist from number of pages.

1 region - * segments, 1 segment - * pages.

Segment lock is performed when set of pages in this segment is changed
(page rotated with disk - this process named page replacement, or new
additional page is created - allocatePage).

Segments intended to decrease contention to page sets, by default number of
segments is coming from CPU count.

Some info can be found here

Unfortunately there is no picture there about segments, but I hope some day
it will be created.

Dmitriy Pavlov

вт, 13 февр. 2018 г. в 16:51, John Wilson <sami.hailu...@gmail.com>:

> Hi Pavlov,
> Thanks for your explanation. However, I still have these questions:
>    1. If locking is per page-level and there are no entry-level locks,
>    then why does the documentation here talk about having entry-level
>    transaction locks? https://apacheignite.readme.io/docs/transactions
>    2. I'm not clear with what "locking a durable memory region segment "
>    means, what is a segment? Does a page contain multiple segments or a
>    segment contains multiple pages? The mental picture I have is: a memory
>    region is divided into pages (which can be meta data pages, index, or data
>    pages). Index pages hold links to data page id and offset for key-value
>    pairs while data pages contain the actual key-value pairs. So, what really
>    is a segment and what does locking a memory segment means? I understanding
>    page-locks, what is segment lock?
> Appreciate your response!!!
> On Tue, Feb 13, 2018 at 2:32 AM, Dmitry Pavlov <dpavlov....@gmail.com>
> wrote:
>> Hi John,
>> 1. No, content modification require lock holding to page to provide
>> consitency in multithreaded environment.
>> 2. Page is locked for read before reading its content, and unlocked after.
>> Same for lock for write for writting. 1 writer or N readers allowed for
>> page. On unlock write lock, dirty flag for page may be set if there data
>> was actually modified.
>> 3. Lock has per-page basis, additional striping by any offest within page
>> is not required accoring to tests.
>> Only one contention is observed sometimes in high load test, it is
>> contention of threads to lock to durable memory region segment. But this
>> situation can be handled by setting concurrenclyLevel in
>> DataStorageConfiguration.
>> Sincerely,
>> Dmitriy Pavlov
>> вт, 13 февр. 2018 г. в 9:56, John Wilson <sami.hailu...@gmail.com>:
>> > Hi,
>> >
>> > Ignite documentation talks about entry-level locks and the page
>> structure
>> > has a LOCK_OFFSET that I assume is used to store tag info. I have these
>> > questions.
>> >
>> >    1. Does Ignite use a lock-free implementation to lock pages and/or
>> >    entries?
>> >    2. When is a page locked and when is it released?
>> >    3. When an entry is inserted/modified in a page, is the page locked
>> >    (forbidding other threads from inserting entries in the page)? or
>> only
>> > the
>> >    entry's offset is locked? (allowing other threads to insert/modify
>> other
>> >    items)
>> >
>> > Thanks!
>> >

Reply via email to