Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

postgres.c

Blame
    • Tom Lane's avatar
      ebfc56d3
      Handle impending sinval queue overflow by means of a separate signal · ebfc56d3
      Tom Lane authored
      (SIGUSR1, which we have not been using recently) instead of piggybacking
      on SIGUSR2-driven NOTIFY processing.  This has several good results:
      the processing needed to drain the sinval queue is a lot less than the
      processing needed to answer a NOTIFY; there's less contention since we
      don't have a bunch of backends all trying to acquire exclusive lock on
      pg_listener; backends that are sitting inside a transaction block can
      still drain the queue, whereas NOTIFY processing can't run if there's
      an open transaction block.  (This last is a fairly serious issue that
      I don't think we ever recognized before --- with clients like JDBC that
      tend to sit with open transaction blocks, the sinval queue draining
      mechanism never really worked as intended, probably resulting in a lot
      of useless cache-reset overhead.)  This is the last of several proposed
      changes in response to Philip Warner's recent report of sinval-induced
      performance problems.
      ebfc56d3
      History
      Handle impending sinval queue overflow by means of a separate signal
      Tom Lane authored
      (SIGUSR1, which we have not been using recently) instead of piggybacking
      on SIGUSR2-driven NOTIFY processing.  This has several good results:
      the processing needed to drain the sinval queue is a lot less than the
      processing needed to answer a NOTIFY; there's less contention since we
      don't have a bunch of backends all trying to acquire exclusive lock on
      pg_listener; backends that are sitting inside a transaction block can
      still drain the queue, whereas NOTIFY processing can't run if there's
      an open transaction block.  (This last is a fairly serious issue that
      I don't think we ever recognized before --- with clients like JDBC that
      tend to sit with open transaction blocks, the sinval queue draining
      mechanism never really worked as intended, probably resulting in a lot
      of useless cache-reset overhead.)  This is the last of several proposed
      changes in response to Philip Warner's recent report of sinval-induced
      performance problems.