This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new edbf08ebccd perf: Adapt to Win11(wmic to powershell and compatibility
adjustment) (#15350)
edbf08ebccd is described below
commit edbf08ebccde60d40136793d39602f0e46a16e29
Author: CritasWang <[email protected]>
AuthorDate: Fri Apr 18 10:30:50 2025 +0800
perf: Adapt to Win11(wmic to powershell and compatibility adjustment)
(#15350)
---
.../cli/src/assembly/resources/sbin/start-cli.bat | 3 ++
.../cli/src/assembly/resources/tools/backup.bat | 7 +++--
.../src/assembly/resources/conf/confignode-env.bat | 14 ++++-----
.../assembly/resources/sbin/start-confignode.bat | 2 +-
.../src/assembly/resources/conf/datanode-env.bat | 14 ++++-----
.../src/assembly/resources/sbin/start-datanode.bat | 2 +-
.../src/assembly/resources/sbin/health_check.bat | 33 +++++++++-------------
7 files changed, 36 insertions(+), 39 deletions(-)
diff --git a/iotdb-client/cli/src/assembly/resources/sbin/start-cli.bat
b/iotdb-client/cli/src/assembly/resources/sbin/start-cli.bat
index a3fa8b3f5f9..44339ae4cc1 100644
--- a/iotdb-client/cli/src/assembly/resources/sbin/start-cli.bat
+++ b/iotdb-client/cli/src/assembly/resources/sbin/start-cli.bat
@@ -18,6 +18,9 @@
@REM
@echo off
+@REM set cmd format
+powershell -NoProfile -Command "$v=(Get-ItemProperty
'HKLM:\SOFTWARE\Microsoft\Windows
NT\CurrentVersion').CurrentMajorVersionNumber; if($v -gt 6) { cmd /c 'chcp
65001' }"
+
@REM DEFAULT_SQL_DIALECT is used to set the default SQL dialect for the CLI.
@REM empty value means using "tree".
diff --git a/iotdb-client/cli/src/assembly/resources/tools/backup.bat
b/iotdb-client/cli/src/assembly/resources/tools/backup.bat
index e7974164b08..0fa7c82776e 100644
--- a/iotdb-client/cli/src/assembly/resources/tools/backup.bat
+++ b/iotdb-client/cli/src/assembly/resources/tools/backup.bat
@@ -120,9 +120,10 @@ setlocal
set "pid_to_check=%~1"
set "is_iotdb=0"
-for /f "usebackq tokens=*" %%i in (`wmic process where
"ProcessId=%pid_to_check%" get CommandLine /format:list ^| findstr
/c:"CommandLine="`) do (
- set command_line=%%i
-)
+REM Ensure compatibility by avoiding wmic and using PowerShell if needed
+REM No wmic usage detected in this script
+
+for /f "delims=" %%i in ('powershell -NoProfile -Command
"$v=$host.Version.Major; if($v -lt 3) {Get-WmiObject Win32_Process -Filter
\"ProcessId='%pid_to_check%'\"} else {Get-CimInstance Win32_Process -Filter
\"ProcessId='%pid_to_check%'\"}; $process.CommandLine"') do set
"command_line=%%i"
echo %command_line% | findstr /i /c:"iotdb" >nul && set is_iotdb=1
endlocal & set "is_iotdb=%is_iotdb%"
exit /b
diff --git
a/iotdb-core/confignode/src/assembly/resources/conf/confignode-env.bat
b/iotdb-core/confignode/src/assembly/resources/conf/confignode-env.bat
index d270c08f54e..819ea62f0ea 100644
--- a/iotdb-core/confignode/src/assembly/resources/conf/confignode-env.bat
+++ b/iotdb-core/confignode/src/assembly/resources/conf/confignode-env.bat
@@ -49,19 +49,19 @@ if %JMX_LOCAL% == "false" (
set CONFIGNODE_JMX_OPTS=%CONFIGNODE_JMX_OPTS% -Diotdb.jmx.local=%JMX_LOCAL%
-for /f %%b in ('wmic cpu get numberofcores ^| findstr "[0-9]"') do (
- set system_cpu_cores=%%b
+REM Replace wmic with PowerShell for CPU core count
+for /f %%b in ('powershell -NoProfile -Command "$v=$host.Version.Major; if($v
-lt 3) {(Get-WmiObject Win32_Processor).NumberOfCores} else {(Get-CimInstance
-ClassName Win32_Processor).NumberOfCores}"') do (
+ set system_cpu_cores=%%b
)
if %system_cpu_cores% LSS 1 set system_cpu_cores=1
-for /f %%b in ('wmic ComputerSystem get TotalPhysicalMemory ^| findstr
"[0-9]"') do (
- set system_memory=%%b
+REM Replace wmic with PowerShell for total physical memory
+for /f %%b in ('powershell -NoProfile -Command "$v=$host.Version.Major;
$mem=if($v -lt 3){(Get-WmiObject Win32_ComputerSystem).TotalPhysicalMemory}
else{(Get-CimInstance -ClassName Win32_ComputerSystem).TotalPhysicalMemory};
[math]::Round($mem/1048576)"') do (
+ set system_memory_in_mb=%%b
)
-echo wsh.echo FormatNumber(cdbl(%system_memory%)/(1024*1024), 0) >
"%CONFIGNODE_HOME%\sbin\tmp.vbs"
-for /f "tokens=*" %%a in ('cscript //nologo "%CONFIGNODE_HOME%\sbin\tmp.vbs"')
do set system_memory_in_mb=%%a
-del "%CONFIGNODE_HOME%\sbin\tmp.vbs"
+REM Remove VBScript usage for memory calculation
set system_memory_in_mb=%system_memory_in_mb:,=%
@REM suggest using memory, system memory 3 / 10
diff --git
a/iotdb-core/confignode/src/assembly/resources/sbin/start-confignode.bat
b/iotdb-core/confignode/src/assembly/resources/sbin/start-confignode.bat
index 98399a9990b..40c5869549e 100644
--- a/iotdb-core/confignode/src/assembly/resources/sbin/start-confignode.bat
+++ b/iotdb-core/confignode/src/assembly/resources/sbin/start-confignode.bat
@@ -19,7 +19,7 @@
@echo off
@REM set cmd format
-chcp 65001
+powershell -NoProfile -Command "$v=(Get-ItemProperty
'HKLM:\SOFTWARE\Microsoft\Windows
NT\CurrentVersion').CurrentMajorVersionNumber; if($v -gt 6) { cmd /c 'chcp
65001' }"
title IoTDB ConfigNode
diff --git a/iotdb-core/datanode/src/assembly/resources/conf/datanode-env.bat
b/iotdb-core/datanode/src/assembly/resources/conf/datanode-env.bat
index 16921072dba..df8e8ac6334 100644
--- a/iotdb-core/datanode/src/assembly/resources/conf/datanode-env.bat
+++ b/iotdb-core/datanode/src/assembly/resources/conf/datanode-env.bat
@@ -49,19 +49,19 @@ if %JMX_LOCAL% == "false" (
set IOTDB_JMX_OPTS=%IOTDB_JMX_OPTS% -Diotdb.jmx.local=%JMX_LOCAL%
-for /f %%b in ('wmic cpu get numberofcores ^| findstr "[0-9]"') do (
- set system_cpu_cores=%%b
+REM Replace wmic with PowerShell for CPU core count
+for /f %%b in ('powershell -NoProfile -Command "$v=$host.Version.Major; if($v
-lt 3) {(Get-WmiObject Win32_Processor).NumberOfCores} else {(Get-CimInstance
-ClassName Win32_Processor).NumberOfCores}"') do (
+ set system_cpu_cores=%%b
)
if %system_cpu_cores% LSS 1 set system_cpu_cores=1
-for /f %%b in ('wmic ComputerSystem get TotalPhysicalMemory ^| findstr
"[0-9]"') do (
- set system_memory=%%b
+REM Replace wmic with PowerShell for total physical memory
+for /f %%b in ('powershell -NoProfile -Command "$v=$host.Version.Major;
$mem=if($v -lt 3){(Get-WmiObject Win32_ComputerSystem).TotalPhysicalMemory}
else{(Get-CimInstance -ClassName Win32_ComputerSystem).TotalPhysicalMemory};
[math]::Round($mem/1048576)"') do (
+ set system_memory_in_mb=%%b
)
-echo wsh.echo FormatNumber(cdbl(%system_memory%)/(1024*1024), 0) >
"%IOTDB_HOME%\sbin\tmp.vbs"
-for /f "tokens=*" %%a in ('cscript //nologo "%IOTDB_HOME%\sbin\tmp.vbs"') do
set system_memory_in_mb=%%a
-del "%IOTDB_HOME%\sbin\tmp.vbs"
+REM Remove VBScript usage for memory calculation
set system_memory_in_mb=%system_memory_in_mb:,=%
set /a suggest_=%system_memory_in_mb%/2
diff --git a/iotdb-core/datanode/src/assembly/resources/sbin/start-datanode.bat
b/iotdb-core/datanode/src/assembly/resources/sbin/start-datanode.bat
index fcbce7ed4b0..c80aaf6f551 100755
--- a/iotdb-core/datanode/src/assembly/resources/sbin/start-datanode.bat
+++ b/iotdb-core/datanode/src/assembly/resources/sbin/start-datanode.bat
@@ -19,7 +19,7 @@
@echo off
@REM set cmd format
-chcp 65001
+powershell -NoProfile -Command "$v=(Get-ItemProperty
'HKLM:\SOFTWARE\Microsoft\Windows
NT\CurrentVersion').CurrentMajorVersionNumber; if($v -gt 6) { cmd /c 'chcp
65001' }"
title IoTDB DataNode
diff --git
a/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.bat
b/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.bat
index 78b2ce5930c..19c40f3974e 100644
--- a/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.bat
+++ b/iotdb-core/node-commons/src/assembly/resources/sbin/health_check.bat
@@ -203,15 +203,13 @@ echo Requirement: Allocate sufficient memory for IoTDB
set "totalMemory="
-for /F "skip=1" %%i in ('wmic os get TotalVisibleMemorySize') do (
- if not defined totalMemory (
- set "totalMemory=%%i"
- )
-
+REM Replace wmic with PowerShell for total visible memory size
+for /f %%i in ('powershell -NoProfile -Command "$v=$host.Version.Major;
$mem=if($v -lt 3){(Get-WmiObject Win32_OperatingSystem).TotalVisibleMemorySize}
else{(Get-CimInstance -ClassName
Win32_OperatingSystem).TotalVisibleMemorySize}; [math]::Round($mem/1024)"') do (
+ set totalMemory=%%i
)
set /A totalMemory=!totalMemory!
-set /A totalMemory=totalMemory / 1024 / 1024
+
if "%confignode_mem%" == "" (
if "%datanode_mem%" == "" (
echo Result: Total Memory %totalMemory% GB
@@ -616,19 +614,15 @@ endlocal
exit /b
:system_settings_check
+setlocal enabledelayedexpansion
echo Check: System Settings(Swap)
echo Requirement: disabled
-for /f "skip=1" %%s in ('wmic pagefile list /format:list') do (
- for /f "tokens=1,2 delims==" %%a in ("%%s") do (
- if /i "%%a"=="AllocatedBaseSize" (
- if "%%b"=="0" (
- echo Result: disabled
- ) else (
- echo Result: enabled
- )
- )
- )
-)
+
+set "check_swap_ps_cmd=$v=$host.Version.Major; if($v -lt 3) {
$sys=Get-WmiObject Win32_ComputerSystem; if($sys.AutomaticManagedPagefile) {
'Enabled' } else { $page=Get-WmiObject Win32_PageFileSetting -EA 0; if(!$page)
{ 'Disabled' } else { $page | %% { if($_.InitialSize -ne 0 -or $_.MaximumSize
-ne 0) { 'Enabled'; exit } } 'Disabled' } } } else { $sys=Get-CimInstance
Win32_ComputerSystem; if($sys.AutomaticManagedPagefile) { 'Enabled' } else {
$page=Get-CimInstance Win32_PageFileSetting - [...]
+for /f "delims=" %%a in ('powershell -NoProfile -Command
"%check_swap_ps_cmd%"') do set "result=%%a"
+
+echo Result: !result!
+endlocal
exit /b
:checkIfIOTDBProcess
@@ -637,9 +631,8 @@ setlocal
set "pid_to_check=%~1"
set "is_iotdb=0"
-for /f "usebackq tokens=*" %%i in (`wmic process where
"ProcessId=%pid_to_check%" get CommandLine /format:list ^| findstr
/c:"CommandLine="`) do (
- set command_line=%%i
-)
+for /f "delims=" %%i in ('powershell -NoProfile -Command
"$v=$host.Version.Major; if($v -lt 3) { (Get-WmiObject Win32_Process -Filter
\"ProcessId='%pid_to_check%'\").CommandLine } else { (Get-CimInstance
Win32_Process -Filter \"ProcessId='%pid_to_check%'\").CommandLine }"') do set
"command_line=%%i"
+
echo %command_line% | findstr /i /c:"iotdb" >nul && set is_iotdb=1
endlocal & set "is_iotdb=%is_iotdb%"
exit /b
\ No newline at end of file