From b5492b94add2b9bdef52e40c99b5cd08dee523ae Mon Sep 17 00:00:00 2001 From: ThyeeZz Date: Fri, 3 Jan 2025 17:32:26 +0800 Subject: [PATCH] sizingtool review phase 2 --- src/components/customButton/index.module.less | 16 +- src/i18n/en/sizingTool.json | 17 +- src/pages/tools/sizing.tsx | 1 + src/parts/sizing/dependencyComponent.tsx | 210 ++++++++++++--- src/parts/sizing/formSection.tsx | 80 ++++-- src/parts/sizing/index.module.less | 19 ++ src/parts/sizing/indexTypeComponent.tsx | 173 ++++++++++-- src/parts/sizing/resultSection.tsx | 249 +++++++++++++----- src/types/sizing.ts | 1 + src/utils/sizingTool.ts | 17 +- 10 files changed, 624 insertions(+), 159 deletions(-) diff --git a/src/components/customButton/index.module.less b/src/components/customButton/index.module.less index 2abe5dd4..5538440f 100644 --- a/src/components/customButton/index.module.less +++ b/src/components/customButton/index.module.less @@ -46,6 +46,19 @@ background-color: @color-white1; } } + &.disabledButton { + border-color: #e4eaf1; + color: #ccc; + cursor: not-allowed; + + svg path { + fill: #ccc; + } + + &:hover { + background-color: #fff; + } + } } .text { @@ -72,6 +85,3 @@ padding: 14px 32px; border-radius: 10px; } - -.disabledButton { -} diff --git a/src/i18n/en/sizingTool.json b/src/i18n/en/sizingTool.json index 867eb518..2453b08a 100644 --- a/src/i18n/en/sizingTool.json +++ b/src/i18n/en/sizingTool.json @@ -10,7 +10,9 @@ "offloading": "Offloading Fields to Disk", "mmp": "Milvus uses <0>Mmap to enable direct memory access to large files on disk without reading the entire files into memory.", "indexType": "Index Type", + "indexTypeTip": "How to choose vector index? <0>Learn more.", "indexParam": "Index Parameters", + "indexParamTip": "How to set proper index parameters? <0>learn more details.", "withRawData": "with_raw_data", "m": "m(maximum degree of the node)", "nlist": "nlist", @@ -18,14 +20,14 @@ "segmentSize": "Segment Size", "dependencyComp": "Dependency Component", "mode": "Mode", - "modeTip": "With data growth, you can migrate data from standalone mode to cluster mode. <0>View More", - "modeDisableTip": "Don‘t support standalone mode when number of vector exceed 10 Million or XXXXXXXX.", + "modeTip": "With data growth, you can migrate data from standalone mode to cluster mode. <0>View More.", + "modeDisableTip": "For large data sizes, it is recommended to use cluster mode deployment to achieve better performance and scalability.", "pulsar": "Pulsar", "kafka": "Kafka", "standalone": "Standalone", "standaloneDesc": "Suitable for small data size and poc env.", "cluster": "Cluster", - "clusterDesc": "Suitable for large datasize and production env. " + "clusterDesc": "Suitable for large data size and production env. " }, "overview": { "title": "Data Size Calculation", @@ -36,7 +38,8 @@ }, "setup": { "title": "Setup Resource Requirements", - "share": "Scaling cluster or dependencies", + "cloud": "Try Zilliz Cloud Calculator", + "outOfRange": "Your data volume is substantial. Please <0>contact us to explore the best deployment practices.", "milvus": { "title": "Milvus Components", "proxy": "Proxy", @@ -65,15 +68,15 @@ "apacheTip": "Please mount a high-performance storage drive(NVMe SSD) for Bookie.Journal and Zookeeper to ensure optimal performance." }, "basic": { - "cpuAndMemory": "CPU and Memory: <0>{{cpu}} C {{memory}}", - "storageWithValue": "Storage: <0>{{storage}} GB", + "cpuAndMemory": "CPU and Memory: <0>{{cpu}} {{memory}}", + "storageWithValue": "Storage: <0>{{size}}", "diskWithValue": "Local Disk: <0>{{disk}} {{unit}}", "cpu": "CPU", "memory": "Memory", "disk": "Local Disk", "storage": "Storage", "podNum": "Pod Number", - "pvc": "Pvc per Pod: <0>{{pvc}} GB", + "pvc": "Pvc per Pod: <0>{{pvc}}", "pvcLabel": "Pvc per Pod", "journal": "Journal", "ledger": "Ledgers", diff --git a/src/pages/tools/sizing.tsx b/src/pages/tools/sizing.tsx index 56092663..4497af52 100644 --- a/src/pages/tools/sizing.tsx +++ b/src/pages/tools/sizing.tsx @@ -117,6 +117,7 @@ export default function SizingTool() { }, mode: ModeEnum.Standalone, dependency: DependencyComponentEnum.Pulsar, + isOutOfCalculate: false, }); const updateCalculatedResult = (result: ICalculateResult) => { diff --git a/src/parts/sizing/dependencyComponent.tsx b/src/parts/sizing/dependencyComponent.tsx index 82de2fae..a4fc0bc7 100644 --- a/src/parts/sizing/dependencyComponent.tsx +++ b/src/parts/sizing/dependencyComponent.tsx @@ -13,19 +13,25 @@ import { TooltipContent, TooltipArrow, } from '@/components/ui'; +import { formatOutOfCalData } from '@/utils/sizingTool'; export const DependencyComponent = (props: { data: DependencyConfigType; mode: ModeEnum; dependency: DependencyComponentEnum; + isOutOfCalculate: boolean; }) => { const { t } = useTranslation('sizingTool'); - const { data, mode, dependency } = props; + const { data, mode, dependency, isOutOfCalculate } = props; const { etcd, minio, pulsar, kafka } = data; - const PulsarInfo = (props: Pick) => { - const { pulsar } = props; + const PulsarInfo = ( + props: Pick & { + isOutOfCalculate: boolean; + } + ) => { + const { pulsar, isOutOfCalculate } = props; return (
@@ -50,7 +56,13 @@ export const DependencyComponent = (props: { , ]} @@ -62,7 +74,10 @@ export const DependencyComponent = (props: { {t('setup.basic.cpu')}: - {t('setup.basic.core', { cpu: pulsar.bookie.cpu })} + {formatOutOfCalData({ + data: t('setup.basic.core', { cpu: pulsar.bookie.cpu }), + isOut: isOutOfCalculate, + })}
  • @@ -70,7 +85,10 @@ export const DependencyComponent = (props: { {t('setup.basic.memory')}: - {t('setup.basic.gb', { memory: pulsar.bookie.memory })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { memory: pulsar.bookie.memory }), + isOut: isOutOfCalculate, + })}
  • @@ -78,7 +96,12 @@ export const DependencyComponent = (props: { {t('setup.basic.journal')}: - {t('setup.basic.gb', { memory: pulsar.bookie.journal })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { + memory: pulsar.bookie.journal, + }), + isOut: isOutOfCalculate, + })}
  • @@ -86,7 +109,12 @@ export const DependencyComponent = (props: { {t('setup.basic.ledger')}: - {t('setup.basic.gb', { memory: pulsar.bookie.ledgers })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { + memory: pulsar.bookie.ledgers, + }), + isOut: isOutOfCalculate, + })}
  • @@ -96,7 +124,13 @@ export const DependencyComponent = (props: { , ]} @@ -108,7 +142,10 @@ export const DependencyComponent = (props: { {t('setup.basic.cpu')}: - {t('setup.basic.core', { cpu: pulsar.broker.cpu })} + {formatOutOfCalData({ + data: t('setup.basic.core', { cpu: pulsar.broker.cpu }), + isOut: isOutOfCalculate, + })}
  • @@ -116,7 +153,10 @@ export const DependencyComponent = (props: { {t('setup.basic.memory')}: - {t('setup.basic.gb', { memory: pulsar.broker.memory })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { memory: pulsar.broker.memory }), + isOut: isOutOfCalculate, + })}
  • @@ -126,7 +166,13 @@ export const DependencyComponent = (props: { , ]} @@ -138,7 +184,10 @@ export const DependencyComponent = (props: { {t('setup.basic.cpu')}: - {t('setup.basic.core', { cpu: pulsar.proxy.cpu })} + {formatOutOfCalData({ + data: t('setup.basic.core', { cpu: pulsar.proxy.cpu }), + isOut: isOutOfCalculate, + })}
  • @@ -146,7 +195,10 @@ export const DependencyComponent = (props: { {t('setup.basic.memory')}: - {t('setup.basic.gb', { memory: pulsar.proxy.memory })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { memory: pulsar.proxy.memory }), + isOut: isOutOfCalculate, + })}
  • @@ -156,7 +208,13 @@ export const DependencyComponent = (props: { , ]} @@ -168,7 +226,10 @@ export const DependencyComponent = (props: { {t('setup.basic.cpu')}: - {t('setup.basic.core', { cpu: pulsar.zookeeper.cpu })} + {formatOutOfCalData({ + data: t('setup.basic.core', { cpu: pulsar.zookeeper.cpu }), + isOut: isOutOfCalculate, + })}
  • @@ -176,7 +237,12 @@ export const DependencyComponent = (props: { {t('setup.basic.memory')}: - {t('setup.basic.gb', { memory: pulsar.zookeeper.memory })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { + memory: pulsar.zookeeper.memory, + }), + isOut: isOutOfCalculate, + })}
  • @@ -184,7 +250,10 @@ export const DependencyComponent = (props: { {t('setup.basic.pvcLabel')}: - {t('setup.basic.gb', { memory: pulsar.zookeeper.pvc })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { memory: pulsar.zookeeper.pvc }), + isOut: isOutOfCalculate, + })}
  • @@ -194,8 +263,12 @@ export const DependencyComponent = (props: { ); }; - const KafkaInfo = (props: Pick) => { - const { kafka } = props; + const KafkaInfo = ( + props: Pick & { + isOutOfCalculate: boolean; + } + ) => { + const { kafka, isOutOfCalculate } = props; return (
    @@ -220,7 +293,13 @@ export const DependencyComponent = (props: { , ]} @@ -232,7 +311,10 @@ export const DependencyComponent = (props: { {t('setup.basic.cpu')}: - {t('setup.basic.core', { cpu: kafka.broker.cpu })} + {formatOutOfCalData({ + data: t('setup.basic.core', { cpu: kafka.broker.cpu }), + isOut: isOutOfCalculate, + })}
  • @@ -240,7 +322,10 @@ export const DependencyComponent = (props: { {t('setup.basic.memory')}: - {t('setup.basic.gb', { memory: kafka.broker.memory })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { memory: kafka.broker.memory }), + isOut: isOutOfCalculate, + })}
  • @@ -248,7 +333,10 @@ export const DependencyComponent = (props: { {t('setup.basic.pvcLabel')}: - {t('setup.basic.gb', { memory: kafka.broker.pvc })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { memory: kafka.broker.pvc }), + isOut: isOutOfCalculate, + })}
  • @@ -259,7 +347,13 @@ export const DependencyComponent = (props: { , ]} @@ -271,7 +365,10 @@ export const DependencyComponent = (props: { {t('setup.basic.cpu')}: - {t('setup.basic.core', { cpu: kafka.zookeeper.cpu })} + {formatOutOfCalData({ + data: t('setup.basic.core', { cpu: kafka.zookeeper.cpu }), + isOut: isOutOfCalculate, + })}
  • @@ -279,7 +376,12 @@ export const DependencyComponent = (props: { {t('setup.basic.memory')}: - {t('setup.basic.gb', { memory: kafka.zookeeper.memory })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { + memory: kafka.zookeeper.memory, + }), + isOut: isOutOfCalculate, + })}
  • @@ -287,7 +389,10 @@ export const DependencyComponent = (props: { {t('setup.basic.pvcLabel')}: - {t('setup.basic.gb', { memory: kafka.zookeeper.pvc })} + {formatOutOfCalData({ + data: t('setup.basic.gb', { memory: kafka.zookeeper.pvc }), + isOut: isOutOfCalculate, + })}
  • @@ -316,14 +421,29 @@ export const DependencyComponent = (props: { } - data={t('setup.basic.config', { cpu: etcd.cpu, memory: etcd.memory })} - count={etcd.count} + data={formatOutOfCalData({ + data: t('setup.basic.config', { + cpu: etcd.cpu, + memory: etcd.memory, + }), + isOut: isOutOfCalculate, + })} + count={formatOutOfCalData({ + data: etcd.count, + isOut: isOutOfCalculate, + isCount: true, + })} desc={

    ]} />

    @@ -332,17 +452,29 @@ export const DependencyComponent = (props: { /> ]} />

    @@ -354,9 +486,9 @@ export const DependencyComponent = (props: {
    <> {dependency === DependencyComponentEnum.Pulsar ? ( - + ) : ( - + )}
    @@ -369,7 +501,7 @@ export const DataCard = (props: { name: React.ReactNode; data: string; desc?: React.ReactNode; - count?: number; + count?: number | string; classname?: string; size?: string; }) => { diff --git a/src/parts/sizing/formSection.tsx b/src/parts/sizing/formSection.tsx index f34f6e75..56519878 100644 --- a/src/parts/sizing/formSection.tsx +++ b/src/parts/sizing/formSection.tsx @@ -37,6 +37,7 @@ import { rawDataSizeCalculator, $10M768D, dependencyCalculator, + $1B768D, } from '@/utils/sizingTool'; import { Trans, useTranslation } from 'react-i18next'; import { TooltipArrow } from '@radix-ui/react-tooltip'; @@ -174,13 +175,14 @@ export default function FormSection(props: { scalarAvg: form.scalarData.averageNum, }); - if (rawDataSize >= $10M768D) { + if (rawDataSize > $10M768D) { currentMode = ModeEnum.Cluster; setDisableStandalone(true); } else if (rawDataSize < $10M768D) { setDisableStandalone(false); } + const { memory, disk: localDisk } = memoryAndDiskCalculator({ rawDataSize, indexTypeParams, @@ -212,6 +214,7 @@ export default function FormSection(props: { dependencyConfig: dependencyConfig, mode: currentMode, dependency: form.dependency, + isOutOfCalculate: rawDataSize > $1B768D, }); }, [form, indexTypeParams]); @@ -292,7 +295,7 @@ export default function FormSection(props: { ]} + components={[]} />

    @@ -302,7 +305,32 @@ export default function FormSection(props: {
    -

    {t('form.indexType')}

    + + + +

    + {t('form.indexType')} +

    +
    + + , + ]} + /> + + +
    +
    +
    -
    -

    {t('form.dependencyComp')}

    -
    - {dependencyOptions.map(v => ( - - ))} -
    -
    -
    + +

    @@ -413,8 +423,7 @@ export default function FormSection(props: { - Don‘t support standalone mode when number of vector exceed - 10 Million or XXXXXXXX. + {t('form.modeDisableTip')} @@ -436,6 +445,27 @@ export default function FormSection(props: {

    + {form.mode === ModeEnum.Cluster && ( +
    +

    {t('form.dependencyComp')}

    +
    + {dependencyOptions.map(v => ( + + ))} +
    +
    + )} ); diff --git a/src/parts/sizing/index.module.less b/src/parts/sizing/index.module.less index c1400fd7..387588e5 100644 --- a/src/parts/sizing/index.module.less +++ b/src/parts/sizing/index.module.less @@ -205,6 +205,25 @@ .resultContainer { padding: 40px 20px; + .substantialWrapper { + display: flex; + align-items: center; + gap: 8px; + padding: 20px; + margin-bottom: 40px; + background-color: #e0f2fc; + border-radius: 12px; + + .substantialTip { + .paragraph6-regular(); + + a { + color: #000; + text-decoration: underline; + } + } + } + .dataSection { margin-bottom: 40px; } diff --git a/src/parts/sizing/indexTypeComponent.tsx b/src/parts/sizing/indexTypeComponent.tsx index 2011c3df..deb6c624 100644 --- a/src/parts/sizing/indexTypeComponent.tsx +++ b/src/parts/sizing/indexTypeComponent.tsx @@ -1,5 +1,13 @@ import { IIndexType, IndexTypeEnum } from '@/types/sizing'; -import { RadioGroupItem, RadioGroup } from '@/components/ui'; +import { + RadioGroupItem, + RadioGroup, + TooltipProvider, + TooltipTrigger, + Tooltip, + TooltipContent, + TooltipArrow, +} from '@/components/ui'; import classes from './index.module.less'; import clsx from 'clsx'; import { SizingRange } from '@/components/sizing'; @@ -8,7 +16,7 @@ import { N_LIST_RANGE_CONFIG, M_RANGE_CONFIG, } from '@/consts/sizing'; -import { useTranslation } from 'react-i18next'; +import { Trans, useTranslation } from 'react-i18next'; type IndexTypeComponentProps = { data: IIndexType; @@ -21,9 +29,36 @@ const SCANNComponent = (props: IndexTypeComponentProps) => { return (
    -

    - {t('form.indexParam')} -

    + + + +

    + {t('form.indexParam')} +

    +
    + + , + ]} + /> + + +
    +
    +

    {t('form.withRawData')}

    @@ -52,9 +87,35 @@ const HNSWComponent = (props: IndexTypeComponentProps) => { const { data, onChange } = props; return (
    -

    - {t('form.indexParam')} -

    + + + +

    + {t('form.indexParam')} +

    +
    + + , + ]} + /> + + +
    +

    {t('form.m')}

    { const { data, onChange } = props; return (
    -

    - {t('form.indexParam')} -

    + + + +

    + {t('form.indexParam')} +

    +
    + + , + ]} + /> + + +
    +

    {t('form.maxDegree')}

    { const { data, onChange } = props; return (
    -

    - {t('form.indexParam')} -

    + + + +

    + {t('form.indexParam')} +

    +
    + + , + ]} + /> + + +
    +

    {t('form.nlist')}

    { const { data, onChange } = props; return (
    -

    - {t('form.indexParam')} -

    + + + +

    + {t('form.indexParam')} +

    +
    + + , + ]} + /> + + +
    +

    {t('form.nlist')}

    + {isOutOfCalculate && ( +
    + +

    + { + , + ]} + /> + } +

    +
    + )}

    {t('overview.title')}

    @@ -133,7 +163,10 @@ export default function ResultSection(props: { } - data={`${totalRawDataSize} ${rawDataUnit}`} + data={formatOutOfCalData({ + data: `${totalRawDataSize} ${rawDataUnit}`, + isOut: isOutOfCalculate, + })} /> } - data={`${totalLoadingMemorySize} ${memoryUnit}`} + data={formatOutOfCalData({ + data: `${totalLoadingMemorySize} ${memoryUnit}`, + isOut: isOutOfCalculate, + })} />
    @@ -171,27 +210,40 @@ export default function ResultSection(props: {
    @@ -212,8 +264,16 @@ export default function ResultSection(props: { t={t} i18nKey="setup.basic.cpuAndMemory" values={{ - cpu: `${milvusCpuData.num}${milvusCpuData.unit}`, - memory: `${milvusMemoryData.size}${milvusMemoryData.unit}`, + cpu: formatOutOfCalData({ + data: `${milvusCpuData.num}${milvusCpuData.unit} C`, + isOut: isOutOfCalculate, + short: true, + }), + memory: formatOutOfCalData({ + data: `${milvusMemoryData.size}${milvusMemoryData.unit}`, + isOut: isOutOfCalculate, + short: true, + }), }} components={[ } - data={t('setup.basic.config', { - cpu: proxy.cpu, - memory: proxy.memory, + data={formatOutOfCalData({ + data: t('setup.basic.config', { + cpu: proxy.cpu, + memory: proxy.memory, + }), + isOut: isOutOfCalculate, + })} + count={formatOutOfCalData({ + data: proxy.count, + isOut: isOutOfCalculate, + isCount: true, })} - count={proxy.count} classname={classes.detailCard} /> } - data={t('setup.basic.config', { - cpu: mixCoord.cpu, - memory: mixCoord.memory, + data={formatOutOfCalData({ + data: t('setup.basic.config', { + cpu: mixCoord.cpu, + memory: mixCoord.memory, + }), + isOut: isOutOfCalculate, + })} + count={formatOutOfCalData({ + data: mixCoord.count, + isOut: isOutOfCalculate, + isCount: true, })} - count={mixCoord.count} classname={classes.detailCard} /> } - data={t('setup.basic.config', { - cpu: dataNode.cpu, - memory: dataNode.memory, + data={formatOutOfCalData({ + data: t('setup.basic.config', { + cpu: dataNode.cpu, + memory: dataNode.memory, + }), + isOut: isOutOfCalculate, + })} + count={formatOutOfCalData({ + data: dataNode.count, + isOut: isOutOfCalculate, + isCount: true, })} - count={dataNode.count} classname={classes.detailCard} /> } - data={t('setup.basic.config', { - cpu: indexNode.cpu, - memory: indexNode.memory, + data={formatOutOfCalData({ + data: t('setup.basic.config', { + cpu: indexNode.cpu, + memory: indexNode.memory, + }), + isOut: isOutOfCalculate, + })} + count={formatOutOfCalData({ + data: indexNode.count, + isOut: isOutOfCalculate, + isCount: true, })} - count={indexNode.count} classname={classes.detailCard} /> } - data={t('setup.basic.config', { - cpu: queryNode.cpu, - memory: queryNode.memory, + data={formatOutOfCalData({ + data: t('setup.basic.config', { + cpu: queryNode.cpu, + memory: queryNode.memory, + }), + isOut: isOutOfCalculate, })} desc={ - , - , - ]} - /> + diskSize > 0 ? ( + , + , + ]} + /> + ) : undefined } - count={queryNode.count} + count={formatOutOfCalData({ + data: queryNode.count, + isOut: isOutOfCalculate, + isCount: true, + })} classname={classes.detailCard} />
    @@ -431,8 +541,16 @@ export default function ResultSection(props: { t={t} i18nKey="setup.basic.cpuAndMemory" values={{ - cpu: `${dependencyCpuData.num}${dependencyCpuData.unit}`, - memory: `${dependencyMemoryData.size}${dependencyMemoryData.unit}`, + cpu: formatOutOfCalData({ + data: `${dependencyCpuData.num}${dependencyCpuData.unit}`, + isOut: isOutOfCalculate, + short: true, + }), + memory: formatOutOfCalData({ + data: `${dependencyMemoryData.size}${dependencyMemoryData.unit}`, + isOut: isOutOfCalculate, + short: true, + }), }} components={[ @@ -483,12 +605,16 @@ export default function ResultSection(props: {

    {t('install.title')}

    } classes={{ root: classes.installButton, }} onClick={() => { + if (isOutOfCalculate) { + return; + } handleDownloadConfigFile('helm'); }} > @@ -503,12 +629,16 @@ export default function ResultSection(props: {
    } classes={{ root: classes.installButton, }} onClick={() => { + if (isOutOfCalculate) { + return; + } handleDownloadConfigFile('operator'); }} > @@ -529,19 +659,6 @@ export default function ResultSection(props: { components={[]} />
    - -
    - , - ]} - /> -
    diff --git a/src/types/sizing.ts b/src/types/sizing.ts index 7efaaff7..dc1c5c4d 100644 --- a/src/types/sizing.ts +++ b/src/types/sizing.ts @@ -88,4 +88,5 @@ export interface ICalculateResult { dependencyConfig: DependencyConfigType; mode: ModeEnum; dependency: DependencyComponentEnum; + isOutOfCalculate: boolean; } diff --git a/src/utils/sizingTool.ts b/src/utils/sizingTool.ts index 2900f49c..1efbe327 100644 --- a/src/utils/sizingTool.ts +++ b/src/utils/sizingTool.ts @@ -96,6 +96,19 @@ export const formatNumber = (num: number) => { }; }; +export const formatOutOfCalData = (params: { + data: T; + isOut: boolean; + short?: boolean; + isCount?: boolean; +}) => { + const { data, isOut, short, isCount } = params; + if (isOut) { + return short ? '-' : isCount ? '0' : '--'; + } + return data; +}; + // raw data size calculator export const rawDataSizeCalculator = (params: { num: number; @@ -129,7 +142,7 @@ const $100M768D = rawDataSizeCalculator({ withScalar: false, scalarAvg: 0, }); -const $1B768D = rawDataSizeCalculator({ +export const $1B768D = rawDataSizeCalculator({ num: 1000, d: 768, withScalar: false, @@ -466,7 +479,7 @@ export const dependencyCalculator = (params: { }, }; - if (rawDataSize >= thresholds[1] && rawDataSize < thresholds[2]) { + if (rawDataSize >= thresholds[1] && rawDataSize <= thresholds[2]) { minioBaseConfig = { cpu: 1, memory: 8,