You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by hu...@apache.org on 2015/12/25 05:02:07 UTC
incubator-hawq git commit: HAWQ-278. Add min_cost for each query.
Repository: incubator-hawq
Updated Branches:
refs/heads/master 454945f42 -> 10e2b18d2
HAWQ-278. Add min_cost for each query.
Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/10e2b18d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/10e2b18d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/10e2b18d
Branch: refs/heads/master
Commit: 10e2b18d2099474b6a60119650b9b0931bf6e5d5
Parents: 454945f
Author: hubertzhang <hz...@pivotal.io>
Authored: Fri Dec 25 12:00:47 2015 +0800
Committer: hubertzhang <hz...@pivotal.io>
Committed: Fri Dec 25 12:00:47 2015 +0800
----------------------------------------------------------------------
src/backend/cdb/cdbdatalocality.c | 7 ++++++-
src/backend/cdb/cdbvars.c | 1 +
src/backend/utils/misc/guc.c | 10 ++++++++++
src/include/cdb/cdbvars.h | 1 +
4 files changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/10e2b18d/src/backend/cdb/cdbdatalocality.c
----------------------------------------------------------------------
diff --git a/src/backend/cdb/cdbdatalocality.c b/src/backend/cdb/cdbdatalocality.c
index 5c3cbde..3ab90b3 100644
--- a/src/backend/cdb/cdbdatalocality.c
+++ b/src/backend/cdb/cdbdatalocality.c
@@ -4111,8 +4111,13 @@ calculate_planner_segment_num(Query *query, QueryResourceLife resourceLife,
minTargetSegmentNumber = enforce_virtual_segment_number;
}
uint64_t before_rm_allocate_resource = gettime_microsec();
+
+ /* cost is use by RM to balance workload between hosts. the cost is at least one block size*/
+ int64 mincost = min_cost_for_each_query;
+ mincost <<= 20;
+ int64 queryCost = context.total_size < mincost ? mincost : context.total_size;
if (QRL_NONE != resourceLife) {
- resource = AllocateResource(QRL_ONCE, sliceNum, context.total_size,
+ resource = AllocateResource(QRL_ONCE, sliceNum, queryCost,
maxTargetSegmentNumber, minTargetSegmentNumber,
context.host_context.hostnameVolInfos, context.host_context.size);
}
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/10e2b18d/src/backend/cdb/cdbvars.c
----------------------------------------------------------------------
diff --git a/src/backend/cdb/cdbvars.c b/src/backend/cdb/cdbvars.c
index e9021ee..078957f 100644
--- a/src/backend/cdb/cdbvars.c
+++ b/src/backend/cdb/cdbvars.c
@@ -267,6 +267,7 @@ int max_filecount_notto_split_segment;
int min_datasize_to_combine_segment;
int datalocality_algorithm_version;
int hash_to_random_flag;
+int min_cost_for_each_query;
bool metadata_cache_enable;
int metadata_cache_block_capacity;
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/10e2b18d/src/backend/utils/misc/guc.c
----------------------------------------------------------------------
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index e51417f..c4b81c5 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -6273,6 +6273,16 @@ static struct config_int ConfigureNamesInt[] =
},
{
+ {"min_cost_for_each_query", PGC_USERSET, DEVELOPER_OPTIONS,
+ gettext_noop("Sets min cost(MB) for each query which is utilized by RM"),
+ NULL,
+ GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
+ },
+ &min_cost_for_each_query,
+ 128, 1, 1024 ,NULL, NULL
+ },
+
+ {
{"datalocality_algorithm_version", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Sets dalocality algorithm version default is 1(For DEBUG)"),
NULL,
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/10e2b18d/src/include/cdb/cdbvars.h
----------------------------------------------------------------------
diff --git a/src/include/cdb/cdbvars.h b/src/include/cdb/cdbvars.h
index 6526168..1cc9764 100644
--- a/src/include/cdb/cdbvars.h
+++ b/src/include/cdb/cdbvars.h
@@ -1219,6 +1219,7 @@ extern int rm_nresqueue_limit;
extern int max_filecount_notto_split_segment;
extern int min_datasize_to_combine_segment;
extern int datalocality_algorithm_version;
+extern int min_cost_for_each_query;
typedef enum
{