db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dag H. Wanvik (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-733) Starvation in RAFContainer.readPage()
Date Mon, 29 Jun 2009 14:43:47 GMT

     [ https://issues.apache.org/jira/browse/DERBY-733?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Dag H. Wanvik updated DERBY-733:
--------------------------------

    Derby Categories: [Performance]

> Starvation in RAFContainer.readPage()
> -------------------------------------
>
>                 Key: DERBY-733
>                 URL: https://issues.apache.org/jira/browse/DERBY-733
>             Project: Derby
>          Issue Type: Improvement
>          Components: Store
>    Affects Versions: 10.1.2.1, 10.1.3.1, 10.2.1.6
>         Environment: Solaris x86 and Linux with Sun JVM 1.5.0. Derby embedded and client/server.
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>             Fix For: 10.2.1.6
>
>         Attachments: DERBY-733-more-exception-handling.diff, DERBY-733.diff, Insert.java,
Select.java
>
>
> When Derby is completely disk bound, threads might be starved in
> RAFContainer.readPage(). This is a real problem when multiple clients
> are repeatedly accessing one or a small number of large tables. In
> cases like this, I have observed very high maximum response times
> (several minutes in the worst cases) on simple transactions. The
> average response time is not affected by this.
> The starvation is caused by a synchronized block in
> RAFContainer.readPage():
>   synchronized (this) {
>       fileData.seek(pageOffset);
>       fileData.readFully(pageData, 0, pageSize);
>   }
> If many threads want to read pages from the same file, there will be a
> long queue of threads waiting for this monitor. Since the Java
> specification does not guarantee that threads waiting for monitors are
> treated fairly, some threads might have to wait for a long time before
> they get the monitor. (Usually, a couple of threads get full throughput
> while the others have to wait.)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message