1. 19 5月, 2017 1 次提交
    • P
      Implement resource group cpu rate limitation. · 2650f728
      Pengzhou Tang 提交于
      Resource group cpu rate limitation is implemented with cgroup on linux
      system. When resource group is enabled via GUC we check whether cgroup
      is available and properly configured on the system. A sub cgroup is
      created for each resource group, cpu quota and share weight will be set
      depends on the resource group configuration. The queries will run under
      these cgroups, and the cpu usage will be restricted by cgroup.
      
      The cgroups directory structures:
      * /sys/fs/cgroup/{cpu,cpuacct}/gpdb: the toplevel gpdb cgroup
      * /sys/fs/cgroup/{cpu,cpuacct}/gpdb/*/: cgroup for each resource group
      
      The logic for cpu rate limitation:
      
      * in toplevel gpdb cgroup we set the cpu quota and share weight as:
      
          cpu.cfs_quota_us := cpu.cfs_period_us * 256 * gp_resource_group_cpu_limit
          cpu.shares := 1024 * ncores
      
      * for each sub group we set the cpu quota and share weight as:
      
          sub.cpu.cfs_quota_us := -1
          sub.cpu.shares := top.cpu.shares * sub.cpu_rate_limit
      
      The minimum and maximum cpu percentage for a sub cgroup:
      
          sub.cpu.min_percentage := gp_resource_group_cpu_limit * sub.cpu_rate_limit
          sub.cpu.max_percentage := gp_resource_group_cpu_limit
      
      The acutal percentage depends on how busy the system is.
      
      gp_resource_group_cpu_limit is a GUC introduced to control the cpu
      resgroups assigned on each host.
      
          gpconfig -c gp_resource_group_cpu_limit -v '0.9'
      
      A new pipeline is created to perform the tests as we need privileged
      permission to enable and setup cgroups on the system.
      Signed-off-by: NNing Yu <nyu@pivotal.io>
      2650f728
  2. 07 3月, 2017 1 次提交
    • A
      Extend isolation2 test framework. · a5a473c0
      Ashwin Agrawal and Xin Zhang 提交于
      First, it support shell script and command:
      
      The new syntax is:
      ```
      ! <some script>
      ```
      This is required to run something like gpfaultinjector, gpstart, gpstop, etc.
      
      Second, it support utility mode with blocking command and join:
      
      The new syntax is:
      ```
      2U&: <sql>
      2U<:
      ```
      The above example means:
      - blocking in utility mode on dbid 2
      - join back in previous session in utility mode on dbid 2
      
      Fix the exception handling to allow the test to complete, and log the failed
      commands instead of abort the test. This will make sure all the cleaning steps
      are executed and not blocking following tests.
      
      This also include init_file for diff comparison to ignore timestamp output from
      gpfaultinjector.
      a5a473c0
  3. 23 2月, 2017 1 次提交
    • H
      Move UAOCS isolation tests to the new isolation2 test suite. · f6215119
      Heikki Linnakangas 提交于
      These are the same tests queries for column-oriented append-only tables,
      as those moved by commit 11a5a807, for row-oriented append-only tables.
      There were two additional tests that were never executed for row-oriented
      tables though: phantom_reads_update_serializable and
      phantom_reads_delete_serializable. I believe that was an oversight in the
      original test suite; they are now also executed for row-oriented tables.
      
      We use the UAO templating mechanism, to run the same test files against
      row- and column-oriented tables. To make that work, fix a bug in the
      templating mechanism pg_regress.c: if the --ao-dir argument was shorter
      than 7 characters, the uao directory was not detected correctly.
      f6215119
  4. 19 2月, 2017 1 次提交