diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index eab542d8..85fb8972 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -82,6 +82,7 @@ services: - AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN + - AWS_DEFAULT_REGION=$AWS_REGION # for debug # ports: # - "8888:80" diff --git a/src/gprofiler_indexer/callstacks.go b/src/gprofiler_indexer/callstacks.go index 2dee5430..fa8eec92 100644 --- a/src/gprofiler_indexer/callstacks.go +++ b/src/gprofiler_indexer/callstacks.go @@ -49,8 +49,14 @@ type FileInfo struct { } `json:"run_arguments"` } `json:"metadata"` Metrics struct { - CPUAvg float64 `json:"cpu_avg"` - MemoryAvg float64 `json:"mem_avg"` + CPUAvg float64 `json:"cpu_avg"` + MemoryAvg float64 `json:"mem_avg"` + CPUFrequency *float64 `json:"cpu_freq,omitempty"` + CPUCPI *float64 `json:"cpu_cpi,omitempty"` + CPUTMAFEBound *float64 `json:"cpu_tma_fe_bound,omitempty"` + CPUTMABEBound *float64 `json:"cpu_tma_be_bound,omitempty"` + CPUTMABadSpec *float64 `json:"cpu_tma_bad_spec,omitempty"` + CPUTMARetiring *float64 `json:"cpu_tma_retiring,omitempty"` } `json:"metrics"` ApplicationMetadataEnabled bool `json:"application_metadata_enabled"` } @@ -204,7 +210,14 @@ func (pw *ProfilesWriter) writeStacks(weights FrameValuesMap, frames map[string] } func (pw *ProfilesWriter) writeMetrics(serviceId uint32, instanceType string, - hostname string, timestamp time.Time, cpuAverageUsedPercent float64, memoryAverageUsedPercent float64) { + hostname string, timestamp time.Time, cpuAverageUsedPercent float64, memoryAverageUsedPercent float64, + cpuFrequency *float64, + cpuCPI *float64, + cpuTMAFrontEndBound *float64, + cpuTMABackendBound *float64, + cpuTMABadSpec *float64, + cpuTMARetiring *float64, +) { metricRecord := MetricRecord{ Timestamp: timestamp, @@ -213,6 +226,12 @@ func (pw *ProfilesWriter) writeMetrics(serviceId uint32, instanceType string, HostName: hostname, CPUAverageUsedPercent: cpuAverageUsedPercent, MemoryAverageUsedPercent: memoryAverageUsedPercent, + CPUFrequency: cpuFrequency, + CPUCPI: cpuCPI, + CPUTMAFrontEndBound: cpuTMAFrontEndBound, + CPUTMABackendBound: cpuTMABackendBound, + CPUTMABadSpec: cpuTMABadSpec, + CPUTMARetiring: cpuTMARetiring, } pw.metricsRecords <- metricRecord } @@ -267,7 +286,9 @@ func (pw *ProfilesWriter) ParseStackFrameFile(serviceId int, timestamp time.Time if fileInfo.Metrics.CPUAvg != 0 && fileInfo.Metrics.MemoryAvg != 0 { pw.writeMetrics(uint32(serviceId), fileInfo.Metadata.CloudInfo.InstanceType, - fileInfo.Metadata.Hostname, timestamp, fileInfo.Metrics.CPUAvg, fileInfo.Metrics.MemoryAvg) + fileInfo.Metadata.Hostname, timestamp, fileInfo.Metrics.CPUAvg, fileInfo.Metrics.MemoryAvg, + fileInfo.Metrics.CPUFrequency, fileInfo.Metrics.CPUCPI, fileInfo.Metrics.CPUTMAFEBound, + fileInfo.Metrics.CPUTMABEBound, fileInfo.Metrics.CPUTMABadSpec, fileInfo.Metrics.CPUTMARetiring) } return nil diff --git a/src/gprofiler_indexer/clickhouse.go b/src/gprofiler_indexer/clickhouse.go index 995aacb7..02ff36d9 100644 --- a/src/gprofiler_indexer/clickhouse.go +++ b/src/gprofiler_indexer/clickhouse.go @@ -20,9 +20,10 @@ import ( "context" "crypto/tls" "fmt" - "github.com/ClickHouse/clickhouse-go/v2" "sync" "time" + + "github.com/ClickHouse/clickhouse-go/v2" ) type StackRecord struct { @@ -47,6 +48,12 @@ type MetricRecord struct { HostName string CPUAverageUsedPercent float64 MemoryAverageUsedPercent float64 + CPUFrequency *float64 + CPUCPI *float64 + CPUTMAFrontEndBound *float64 + CPUTMABackendBound *float64 + CPUTMABadSpec *float64 + CPUTMARetiring *float64 } type RecordsAttributesUnpack interface { @@ -61,6 +68,12 @@ func (mr MetricRecord) getDbAttributes() []interface{} { mr.HostName, mr.CPUAverageUsedPercent, mr.MemoryAverageUsedPercent, + mr.CPUFrequency, + mr.CPUCPI, + mr.CPUTMAFrontEndBound, + mr.CPUTMABackendBound, + mr.CPUTMABadSpec, + mr.CPUTMARetiring, } return dbAttributes } diff --git a/src/gprofiler_indexer/sql/create_ch_schema.sql b/src/gprofiler_indexer/sql/create_ch_schema.sql index a3516d81..635e169c 100644 --- a/src/gprofiler_indexer/sql/create_ch_schema.sql +++ b/src/gprofiler_indexer/sql/create_ch_schema.sql @@ -13,235 +13,303 @@ -- See the License for the specific language governing permissions and -- limitations under the License. -- - -- create database on cluster -CREATE DATABASE IF NOT EXISTS - flamedb; - +CREATE DATABASE IF NOT EXISTS flamedb; -- create raw table samples local -CREATE TABLE IF NOT EXISTS flamedb.samples -( - Timestamp DateTime('UTC') CODEC (DoubleDelta), - ServiceId UInt32, - InstanceType LowCardinality(String), - ContainerEnvName LowCardinality(String), - HostName LowCardinality(String), - ContainerName LowCardinality(String), - NumSamples UInt32 CODEC (DoubleDelta), - CallStackHash UInt64, - HostNameHash UInt32 MATERIALIZED xxHash32(HostName), - ContainerNameHash UInt32 MATERIALIZED xxHash32(ContainerName), - CallStackName String CODEC (ZSTD), - CallStackParent UInt64, - InsertionTimestamp DateTime('UTC') CODEC (DoubleDelta), - ErrNumSamples UInt32 -) engine = MergeTree() PARTITION BY toYYYYMMDD(Timestamp) - ORDER BY (ServiceId, InstanceType, ContainerEnvName, HostNameHash, ContainerNameHash, Timestamp); +CREATE TABLE IF NOT EXISTS flamedb.samples ( + Timestamp DateTime ('UTC') CODEC (DoubleDelta), + ServiceId UInt32, + InstanceType LowCardinality (String), + ContainerEnvName LowCardinality (String), + HostName LowCardinality (String), + ContainerName LowCardinality (String), + NumSamples UInt32 CODEC (DoubleDelta), + CallStackHash UInt64, + HostNameHash UInt32 MATERIALIZED xxHash32 (HostName), + ContainerNameHash UInt32 MATERIALIZED xxHash32 (ContainerName), + CallStackName String CODEC (ZSTD), + CallStackParent UInt64, + InsertionTimestamp DateTime ('UTC') CODEC (DoubleDelta), + ErrNumSamples UInt32 +) engine = MergeTree () +PARTITION BY + toYYYYMMDD (Timestamp) +ORDER BY + ( + ServiceId, + InstanceType, + ContainerEnvName, + HostNameHash, + ContainerNameHash, + Timestamp + ); -- create raw table metrics local -CREATE TABLE IF NOT EXISTS flamedb.metrics -( - Timestamp DateTime('UTC') CODEC (DoubleDelta), - ServiceId UInt32, - InstanceType LowCardinality(String), - HostName LowCardinality(String), - HostNameHash UInt32 MATERIALIZED xxHash32(HostName), - CPUAverageUsedPercent Float64, - MemoryAverageUsedPercent Float64 -) engine = MergeTree() PARTITION BY toYYYYMMDD(Timestamp) - ORDER BY (ServiceId, InstanceType, HostNameHash, Timestamp); - +CREATE TABLE IF NOT EXISTS flamedb.metrics ( + Timestamp DateTime ('UTC') CODEC (DoubleDelta), + ServiceId UInt32, + InstanceType LowCardinality (String), + HostName LowCardinality (String), + HostNameHash UInt32 MATERIALIZED xxHash32 (HostName), + CPUAverageUsedPercent Float64, + MemoryAverageUsedPercent Float64, + CPUFrequency Nullable (Float64), + CPUCPI Nullable (Float64), + CPUTMAFrontEndBound Nullable (Float64), + CPUTMABackendBound Nullable (Float64), + CPUTMABadSpec Nullable (Float64), + CPUTMARetiring Nullable (Float64) +) engine = MergeTree () +PARTITION BY + toYYYYMMDD (Timestamp) +ORDER BY + (ServiceId, InstanceType, HostNameHash, Timestamp); -- create 60min aggregated table all hostnames and all containers -CREATE TABLE IF NOT EXISTS flamedb.samples_1hour_all -( - Timestamp DateTime('UTC') CODEC(DoubleDelta), +CREATE TABLE IF NOT EXISTS flamedb.samples_1hour_all ( + Timestamp DateTime ('UTC') CODEC (DoubleDelta), ServiceId UInt32, - CallStackHash UInt64, - CallStackName String CODEC (ZSTD), - CallStackParent UInt64, - InsertionTimestamp DateTime('UTC') CODEC(DoubleDelta), - NumSamples UInt64 CODEC(DoubleDelta), - ErrNumSamples UInt32 -) ENGINE = SummingMergeTree((NumSamples)) - PARTITION BY toYYYYMMDD(Timestamp) - ORDER BY (ServiceId, Timestamp, CallStackHash, CallStackParent); - -CREATE MATERIALIZED VIEW IF NOT EXISTS - flamedb.samples_1hour_all_mv TO flamedb.samples_1hour_all -AS -SELECT toStartOfHour(Timestamp) AS Timestamp, - ServiceId, - CallStackHash, - any(CallStackName) as CallStackName, - any(CallStackParent) as CallStackParent, - sum(NumSamples) AS NumSamples, - sum(ErrNumSamples) AS ErrNumSamples, - anyLast(InsertionTimestamp) as InsertionTimestamp -FROM flamedb.samples -GROUP BY ServiceId, CallStackHash, Timestamp; - + CallStackHash UInt64, + CallStackName String CODEC (ZSTD), + CallStackParent UInt64, + InsertionTimestamp DateTime ('UTC') CODEC (DoubleDelta), + NumSamples UInt64 CODEC (DoubleDelta), + ErrNumSamples UInt32 +) ENGINE = SummingMergeTree ((NumSamples)) +PARTITION BY + toYYYYMMDD (Timestamp) +ORDER BY + ( + ServiceId, + Timestamp, + CallStackHash, + CallStackParent + ); +CREATE MATERIALIZED VIEW IF NOT EXISTS flamedb.samples_1hour_all_mv TO flamedb.samples_1hour_all AS +SELECT + toStartOfHour (Timestamp) AS Timestamp, + ServiceId, + CallStackHash, + any (CallStackName) as CallStackName, + any (CallStackParent) as CallStackParent, + sum(NumSamples) AS NumSamples, + sum(ErrNumSamples) AS ErrNumSamples, + anyLast (InsertionTimestamp) as InsertionTimestamp +FROM + flamedb.samples +GROUP BY + ServiceId, + CallStackHash, + Timestamp; -- create 60min aggregated table -CREATE TABLE IF NOT EXISTS flamedb.samples_1hour -( - Timestamp DateTime('UTC') CODEC(DoubleDelta), +CREATE TABLE IF NOT EXISTS flamedb.samples_1hour ( + Timestamp DateTime ('UTC') CODEC (DoubleDelta), ServiceId UInt32, - InstanceType LowCardinality(String), - ContainerEnvName LowCardinality(String), - HostName LowCardinality(String), - ContainerName LowCardinality(String), - CallStackHash UInt64, - CallStackName String CODEC (ZSTD), - CallStackParent UInt64, - InsertionTimestamp DateTime('UTC') CODEC(DoubleDelta), - NumSamples UInt64 CODEC(DoubleDelta), - ErrNumSamples UInt32, -) ENGINE = SummingMergeTree((NumSamples)) - PARTITION BY toYYYYMMDD(Timestamp) - ORDER BY (ServiceId, ContainerEnvName, InstanceType, HostName, ContainerName, - Timestamp, CallStackHash, CallStackParent); - -CREATE MATERIALIZED VIEW IF NOT EXISTS - flamedb.samples_1hour_mv TO flamedb.samples_1hour -AS -SELECT toStartOfHour(Timestamp) AS Timestamp, - ServiceId, - ContainerEnvName, - InstanceType, - HostName, - ContainerName, - CallStackHash, - any(CallStackName) as CallStackName, - any(CallStackParent) as CallStackParent, - sum(NumSamples) AS NumSamples, - sum(ErrNumSamples) AS ErrNumSamples, - anyLast(InsertionTimestamp) as InsertionTimestamp -FROM flamedb.samples -GROUP BY ServiceId, InstanceType, ContainerEnvName, HostName, ContainerName, - CallStackHash, Timestamp; + InstanceType LowCardinality (String), + ContainerEnvName LowCardinality (String), + HostName LowCardinality (String), + ContainerName LowCardinality (String), + CallStackHash UInt64, + CallStackName String CODEC (ZSTD), + CallStackParent UInt64, + InsertionTimestamp DateTime ('UTC') CODEC (DoubleDelta), + NumSamples UInt64 CODEC (DoubleDelta), + ErrNumSamples UInt32, +) ENGINE = SummingMergeTree ((NumSamples)) +PARTITION BY + toYYYYMMDD (Timestamp) +ORDER BY + ( + ServiceId, + ContainerEnvName, + InstanceType, + HostName, + ContainerName, + Timestamp, + CallStackHash, + CallStackParent + ); +CREATE MATERIALIZED VIEW IF NOT EXISTS flamedb.samples_1hour_mv TO flamedb.samples_1hour AS +SELECT + toStartOfHour (Timestamp) AS Timestamp, + ServiceId, + ContainerEnvName, + InstanceType, + HostName, + ContainerName, + CallStackHash, + any (CallStackName) as CallStackName, + any (CallStackParent) as CallStackParent, + sum(NumSamples) AS NumSamples, + sum(ErrNumSamples) AS ErrNumSamples, + anyLast (InsertionTimestamp) as InsertionTimestamp +FROM + flamedb.samples +GROUP BY + ServiceId, + InstanceType, + ContainerEnvName, + HostName, + ContainerName, + CallStackHash, + Timestamp; -- create distributed 24h table all hostnames and all containers -CREATE TABLE IF NOT EXISTS flamedb.samples_1day_all -( - Timestamp DateTime('UTC') CODEC(DoubleDelta), +CREATE TABLE IF NOT EXISTS flamedb.samples_1day_all ( + Timestamp DateTime ('UTC') CODEC (DoubleDelta), ServiceId UInt32, - CallStackHash UInt64, - CallStackName String CODEC (ZSTD), - CallStackParent UInt64, - InsertionTimestamp DateTime('UTC') CODEC(DoubleDelta), - NumSamples UInt64 CODEC(DoubleDelta), - ErrNumSamples UInt32 -) ENGINE = SummingMergeTree((NumSamples)) - PARTITION BY toYYYYMMDD(Timestamp) - ORDER BY (ServiceId, Timestamp, CallStackHash, CallStackParent); - - -CREATE MATERIALIZED VIEW IF NOT EXISTS - flamedb.samples_1day_all_mv to flamedb.samples_1day_all -AS -SELECT toStartOfDay(Timestamp) AS Timestamp, - ServiceId, - CallStackHash, - any(CallStackName) as CallStackName, - any(CallStackParent) as CallStackParent, - sum(NumSamples) AS NumSamples, - sum(ErrNumSamples) AS ErrNumSamples, - anyLast(InsertionTimestamp) as InsertionTimestamp -FROM flamedb.samples -GROUP BY ServiceId, CallStackHash, Timestamp; + CallStackHash UInt64, + CallStackName String CODEC (ZSTD), + CallStackParent UInt64, + InsertionTimestamp DateTime ('UTC') CODEC (DoubleDelta), + NumSamples UInt64 CODEC (DoubleDelta), + ErrNumSamples UInt32 +) ENGINE = SummingMergeTree ((NumSamples)) +PARTITION BY + toYYYYMMDD (Timestamp) +ORDER BY + ( + ServiceId, + Timestamp, + CallStackHash, + CallStackParent + ); +CREATE MATERIALIZED VIEW IF NOT EXISTS flamedb.samples_1day_all_mv to flamedb.samples_1day_all AS +SELECT + toStartOfDay (Timestamp) AS Timestamp, + ServiceId, + CallStackHash, + any (CallStackName) as CallStackName, + any (CallStackParent) as CallStackParent, + sum(NumSamples) AS NumSamples, + sum(ErrNumSamples) AS ErrNumSamples, + anyLast (InsertionTimestamp) as InsertionTimestamp +FROM + flamedb.samples +GROUP BY + ServiceId, + CallStackHash, + Timestamp; -- create 1day aggregated table -CREATE TABLE IF NOT EXISTS flamedb.samples_1day -( - Timestamp DateTime('UTC') CODEC(DoubleDelta), +CREATE TABLE IF NOT EXISTS flamedb.samples_1day ( + Timestamp DateTime ('UTC') CODEC (DoubleDelta), ServiceId UInt32, - InstanceType LowCardinality(String), - ContainerEnvName LowCardinality(String), - HostName LowCardinality(String), - ContainerName LowCardinality(String), - CallStackHash UInt64, - CallStackName String CODEC (ZSTD), - CallStackParent UInt64, - InsertionTimestamp DateTime('UTC') CODEC(DoubleDelta), - NumSamples UInt64 CODEC(DoubleDelta), - ErrNumSamples UInt32 -) ENGINE = SummingMergeTree((NumSamples)) - PARTITION BY toYYYYMMDD(Timestamp) - ORDER BY (ServiceId, ContainerEnvName, InstanceType, HostName, ContainerName, - Timestamp, CallStackHash, CallStackParent); - - -CREATE MATERIALIZED VIEW IF NOT EXISTS - flamedb.samples_1day_mv TO flamedb.samples_1day -AS -SELECT toStartOfDay(Timestamp) AS Timestamp, - ServiceId, - ContainerEnvName, - InstanceType, - HostName, - ContainerName, - CallStackHash, - any(CallStackName) as CallStackName, - any(CallStackParent) as CallStackParent, - sum(NumSamples) AS NumSamples, - sum(ErrNumSamples) AS ErrNumSamples, - anyLast(InsertionTimestamp) as InsertionTimestamp -FROM flamedb.samples -GROUP BY ServiceId, InstanceType, ContainerEnvName, HostName, ContainerName, - CallStackHash, Timestamp; + InstanceType LowCardinality (String), + ContainerEnvName LowCardinality (String), + HostName LowCardinality (String), + ContainerName LowCardinality (String), + CallStackHash UInt64, + CallStackName String CODEC (ZSTD), + CallStackParent UInt64, + InsertionTimestamp DateTime ('UTC') CODEC (DoubleDelta), + NumSamples UInt64 CODEC (DoubleDelta), + ErrNumSamples UInt32 +) ENGINE = SummingMergeTree ((NumSamples)) +PARTITION BY + toYYYYMMDD (Timestamp) +ORDER BY + ( + ServiceId, + ContainerEnvName, + InstanceType, + HostName, + ContainerName, + Timestamp, + CallStackHash, + CallStackParent + ); +CREATE MATERIALIZED VIEW IF NOT EXISTS flamedb.samples_1day_mv TO flamedb.samples_1day AS +SELECT + toStartOfDay (Timestamp) AS Timestamp, + ServiceId, + ContainerEnvName, + InstanceType, + HostName, + ContainerName, + CallStackHash, + any (CallStackName) as CallStackName, + any (CallStackParent) as CallStackParent, + sum(NumSamples) AS NumSamples, + sum(ErrNumSamples) AS ErrNumSamples, + anyLast (InsertionTimestamp) as InsertionTimestamp +FROM + flamedb.samples +GROUP BY + ServiceId, + InstanceType, + ContainerEnvName, + HostName, + ContainerName, + CallStackHash, + Timestamp; -- create local table CREATE TABLE IF NOT EXISTS flamedb.samples_1min ( - Timestamp DateTime('UTC') CODEC(DoubleDelta), + Timestamp DateTime ('UTC') CODEC (DoubleDelta), ServiceId UInt32, - InstanceType LowCardinality(String), - ContainerEnvName LowCardinality(String), - HostName LowCardinality(String), - ContainerName LowCardinality(String), - NumSamples UInt64 CODEC(DoubleDelta), + InstanceType LowCardinality (String), + ContainerEnvName LowCardinality (String), + HostName LowCardinality (String), + ContainerName LowCardinality (String), + NumSamples UInt64 CODEC (DoubleDelta), ErrNumSamples UInt64, HostNameHash UInt32, ContainerNameHash UInt32, - InsertionTimestamp DateTime('UTC') CODEC(DoubleDelta) -) ENGINE = SummingMergeTree((NumSamples)) - PARTITION BY toYYYYMMDD(Timestamp) - ORDER BY (ServiceId, ContainerEnvName, InstanceType, ContainerNameHash, HostNameHash, Timestamp); + InsertionTimestamp DateTime ('UTC') CODEC (DoubleDelta) +) ENGINE = SummingMergeTree ((NumSamples)) +PARTITION BY + toYYYYMMDD (Timestamp) +ORDER BY + ( + ServiceId, + ContainerEnvName, + InstanceType, + ContainerNameHash, + HostNameHash, + Timestamp + ); -- create mv -CREATE MATERIALIZED VIEW IF NOT EXISTS flamedb.samples_1min_mv TO - flamedb.samples_1min -AS SELECT toStartOfMinute(Timestamp) AS - Timestamp, - ServiceId, - InstanceType, - ContainerEnvName, - HostName, - ContainerName, - sum(NumSamples) AS NumSamples, - sum(ErrNumSamples) AS ErrNumSamples, - HostNameHash, - ContainerNameHash, - anyLast(InsertionTimestamp) as InsertionTimestamp - FROM flamedb.samples WHERE CallStackParent = 0 - GROUP BY ServiceId, InstanceType, ContainerEnvName, HostName, ContainerName, HostNameHash, ContainerNameHash, Timestamp; - -ALTER TABLE flamedb.samples - MODIFY TTL "Timestamp" + INTERVAL 30 DAY; - -ALTER TABLE flamedb.samples_1hour - MODIFY TTL "Timestamp" + INTERVAL 30 DAY; - -ALTER TABLE flamedb.samples_1hour_all - MODIFY TTL "Timestamp" + INTERVAL 30 DAY; - -ALTER TABLE flamedb.samples_1day_all - MODIFY TTL "Timestamp" + INTERVAL 30 DAY; - -ALTER TABLE flamedb.samples_1day - MODIFY TTL "Timestamp" + INTERVAL 365 DAY; +CREATE MATERIALIZED VIEW IF NOT EXISTS flamedb.samples_1min_mv TO flamedb.samples_1min AS +SELECT + toStartOfMinute (Timestamp) AS Timestamp, + ServiceId, + InstanceType, + ContainerEnvName, + HostName, + ContainerName, + sum(NumSamples) AS NumSamples, + sum(ErrNumSamples) AS ErrNumSamples, + HostNameHash, + ContainerNameHash, + anyLast (InsertionTimestamp) as InsertionTimestamp +FROM + flamedb.samples +WHERE + CallStackParent = 0 +GROUP BY + ServiceId, + InstanceType, + ContainerEnvName, + HostName, + ContainerName, + HostNameHash, + ContainerNameHash, + Timestamp; + +ALTER TABLE flamedb.samples MODIFY TTL "Timestamp" + INTERVAL 30 DAY; + +ALTER TABLE flamedb.samples_1hour MODIFY TTL "Timestamp" + INTERVAL 30 DAY; + +ALTER TABLE flamedb.samples_1hour_all MODIFY TTL "Timestamp" + INTERVAL 30 DAY; + +ALTER TABLE flamedb.samples_1day_all MODIFY TTL "Timestamp" + INTERVAL 30 DAY; + +ALTER TABLE flamedb.samples_1day MODIFY TTL "Timestamp" + INTERVAL 365 DAY; diff --git a/src/gprofiler_indexer/sql/migrations/20250310_1301_add_new_metrics_columns.sql b/src/gprofiler_indexer/sql/migrations/20250310_1301_add_new_metrics_columns.sql new file mode 100644 index 00000000..e73c2cc6 --- /dev/null +++ b/src/gprofiler_indexer/sql/migrations/20250310_1301_add_new_metrics_columns.sql @@ -0,0 +1,17 @@ +ALTER TABLE flamedb.metrics +ADD COLUMN CPUFrequency Nullable (Float64) AFTER MemoryAverageUsedPercent; + +ALTER TABLE flamedb.metrics +ADD COLUMN CPUCPI Nullable (Float64) AFTER CPUFrequency; + +ALTER TABLE flamedb.metrics +ADD COLUMN CPUTMAFrontEndBound Nullable (Float64) AFTER CPUCPI; + +ALTER TABLE flamedb.metrics +ADD COLUMN CPUTMABackendBound Nullable (Float64) AFTER CPUTMAFrontEndBound; + +ALTER TABLE flamedb.metrics +ADD COLUMN CPUTMABadSpec Nullable (Float64) AFTER CPUTMABackendBound; + +ALTER TABLE flamedb.metrics +ADD COLUMN CPUTMARetiring Nullable (Float64) AFTER CPUTMABadSpec;