List:Internals« Previous MessageNext Message »
From:MARK CALLAGHAN Date:July 3 2008 7:28pm
Subject:Re: mutex contention for the query cache
View as plain text  
Things have changed from 5.0.37 to 5.0.62. Someone added spin lock
behavior for non-windows platforms. Work is still done to initialize
the search key after the lock is obtained. But that work does not
include memory allocation.

Any chance the inlined spin lock can get put into a class so we have
some chance of reuse?

From Query_cache::send_result_to_client():

#ifdef __WIN__
  STRUCT_LOCK(&structure_guard_mutex);
#else
  stop_time= my_clock()+(ulong)lock_time_treshold*CLOCKS_PER_SEC;
  while ((lock_status= pthread_mutex_trylock(&structure_guard_mutex)) == EBUSY
         && spin_count < spin_treshold
         && new_time < stop_time)
  {
    spin_count++;
    if (spin_count%5)
      new_time= my_clock();
    my_sleep(0);
  }

  if (lock_status != 0)
  {
    /*
      Query cache is too busy doing something else.
      Fall back on ordinary statement execution. We also mark this
      query as unsafe to cache because otherwise this thread will
      still be halted when the result set is stored to the cache.
    */
    thd->lex->safe_to_cache_query= FALSE;
    goto err;
  }
#endif


On Thu, Jul 3, 2008 at 10:20 AM, MARK CALLAGHAN <mdcallag@stripped> wrote:
> The query cache has a mutex that is locked while it is searched. This
> is not a spin lock, so many threads will go to sleep when there is
> contention. And it is made worse because work is done to create the
> search key in Query_cache::send_result_to_client() (work == memory
> allocation and other byte copying) after the mutex is locked.
>
> Are there plans to fix this?
> I don't have benchmark results (yet), but I am willing to bet that
> this is a problem.
>
> --
> Mark Callaghan
> mdcallag@stripped
>



-- 
Mark Callaghan
mdcallag@stripped
Thread
mutex contention for the query cacheMARK CALLAGHAN3 Jul
  • Re: mutex contention for the query cacheMARK CALLAGHAN3 Jul
    • Re: mutex contention for the query cacheMARK CALLAGHAN3 Jul
      • RE: mutex contention for the query cacheRick James3 Jul
        • Re: mutex contention for the query cacheMARK CALLAGHAN3 Jul
          • RE: mutex contention for the query cacheRick James3 Jul
            • Re: mutex contention for the query cacheMARK CALLAGHAN3 Jul
              • Re: mutex contention for the query cacheBrian Aker3 Jul
              • Re: mutex contention for the query cacheSergei Golubchik3 Jul
          • Re: mutex contention for the query cacheKonstantin Osipov3 Jul
            • Re: mutex contention for the query cacheBrian Aker3 Jul
              • Re: mutex contention for the query cacheSergey Petrunia3 Jul
                • Re: mutex contention for the query cacheBrian Aker3 Jul
                  • Re: mutex contention for the query cacheSergei Golubchik3 Jul
                    • Re: mutex contention for the query cacheBrian Aker4 Jul
                      • Re: mutex contention for the query cacheJonas Oreland4 Jul
                        • Re: mutex contention for the query cacheSergei Golubchik4 Jul
                          • Re: mutex contention for the query cacheJonas Oreland4 Jul
                            • Re: mutex contention for the query cacheJonas Oreland4 Jul
                              • Re: mutex contention for the query cacheKonstantin Osipov4 Jul
                      • Re: mutex contention for the query cacheMark Leith4 Jul
                      • Re: mutex contention for the query cacheMARK CALLAGHAN4 Jul
                        • Re: mutex contention for the query cacheBrian Aker4 Jul
                          • Re: mutex contention for the query cacheMARK CALLAGHAN5 Jul
                            • Re: mutex contention for the query cacheBrian Aker5 Jul
                            • Re: mutex contention for the query cacheJonas Oreland2 Aug
                              • Re: mutex contention for the query cacheFrazer Clement5 Aug
  • Re: mutex contention for the query cacheKonstantin Osipov3 Jul
  • Re: mutex contention for the query cacheJocelyn Fournier3 Jul
    • RE: mutex contention for the query cacheRick James3 Jul
      • Re: mutex contention for the query cacheJocelyn Fournier3 Jul
        • RE: mutex contention for the query cacheRick James3 Jul
  • Re: mutex contention for the query cacheAntony T Curtis3 Jul