rolling optimize
This commit is contained in:
parent
64e4803df3
commit
76626278ca
@ -49,6 +49,7 @@ gst-launch-1.0 idsueyesrc config-file=ini/whole-presacler64_autoexp-binningx2.in
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Network Streaming
|
## Network Streaming
|
||||||
|
see more at network_guide.md
|
||||||
|
|
||||||
### Sending Line Scan Data Over UDP
|
### Sending Line Scan Data Over UDP
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,11 @@
|
|||||||
# "numpy",
|
# "numpy",
|
||||||
# ]
|
# ]
|
||||||
# ///
|
# ///
|
||||||
|
#
|
||||||
|
# NOTE: For higher performance (200+ fps), see the Go implementation:
|
||||||
|
# scripts/go/main.go - Significantly faster, handles 200+ fps easily
|
||||||
|
# Build: Run scripts/build_go_receiver.ps1 (Windows) or scripts/build_go_receiver.sh (Linux/macOS)
|
||||||
|
# See scripts/go/README.md for setup instructions
|
||||||
|
|
||||||
import socket
|
import socket
|
||||||
import numpy as np
|
import numpy as np
|
||||||
@ -41,6 +46,8 @@ UDP_IP = "0.0.0.0"
|
|||||||
UDP_PORT = 5000
|
UDP_PORT = 5000
|
||||||
|
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 16777216) # 16MB buffer
|
||||||
|
|
||||||
sock.bind((UDP_IP, UDP_PORT))
|
sock.bind((UDP_IP, UDP_PORT))
|
||||||
|
|
||||||
print(f"Receiving raw {COLUMN_WIDTH}x{COLUMN_HEIGHT} RGB columns on UDP port {UDP_PORT}")
|
print(f"Receiving raw {COLUMN_WIDTH}x{COLUMN_HEIGHT} RGB columns on UDP port {UDP_PORT}")
|
||||||
|
|||||||
232
scripts/udp_optimize.ps1
Normal file
232
scripts/udp_optimize.ps1
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
# UDP Performance Optimization Script for Windows
|
||||||
|
# Run as Administrator
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# .\udp_optimize.ps1 query - Show current settings
|
||||||
|
# .\udp_optimize.ps1 apply - Apply optimizations (backs up to udp_backup.reg)
|
||||||
|
# .\udp_optimize.ps1 revert - Restore from backup
|
||||||
|
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory=$true)]
|
||||||
|
[ValidateSet("query", "apply", "revert")]
|
||||||
|
[string]$Action
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check if running as Administrator
|
||||||
|
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||||
|
if (-not $isAdmin) {
|
||||||
|
Write-Error "This script must be run as Administrator!"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$backupFile = "udp_backup.reg"
|
||||||
|
|
||||||
|
# Define registry settings
|
||||||
|
$regSettings = @(
|
||||||
|
@{
|
||||||
|
Path = "HKLM:\SYSTEM\CurrentControlSet\Services\AFD\Parameters"
|
||||||
|
Name = "DefaultReceiveWindow"
|
||||||
|
Type = "DWORD"
|
||||||
|
Value = 16777216 # 16MB
|
||||||
|
Description = "UDP Receive Buffer Size"
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
Path = "HKLM:\SYSTEM\CurrentControlSet\Services\AFD\Parameters"
|
||||||
|
Name = "LargeBufferSize"
|
||||||
|
Type = "DWORD"
|
||||||
|
Value = 4096
|
||||||
|
Description = "Large Buffer Size"
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
Path = "HKLM:\SYSTEM\CurrentControlSet\Services\AFD\Parameters"
|
||||||
|
Name = "MediumBufferSize"
|
||||||
|
Type = "DWORD"
|
||||||
|
Value = 1504
|
||||||
|
Description = "Medium Buffer Size"
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
Path = "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
|
||||||
|
Name = "TcpWindowSize"
|
||||||
|
Type = "DWORD"
|
||||||
|
Value = 65535
|
||||||
|
Description = "TCP Window Size"
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
Path = "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
|
||||||
|
Name = "MaxConnectionsPerServer"
|
||||||
|
Type = "DWORD"
|
||||||
|
Value = 16
|
||||||
|
Description = "Max Connections Per Server"
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
Path = "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
|
||||||
|
Name = "MaxFreeTcbs"
|
||||||
|
Type = "DWORD"
|
||||||
|
Value = 16000
|
||||||
|
Description = "Max Free TCBs"
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
Path = "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
|
||||||
|
Name = "DefaultTTL"
|
||||||
|
Type = "DWORD"
|
||||||
|
Value = 64
|
||||||
|
Description = "Default TTL"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
function Query-Settings {
|
||||||
|
Write-Host "`n=== Current UDP/TCP Performance Settings ===" -ForegroundColor Cyan
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
foreach ($setting in $regSettings) {
|
||||||
|
$path = $setting.Path
|
||||||
|
$name = $setting.Name
|
||||||
|
|
||||||
|
# Ensure path exists
|
||||||
|
if (-not (Test-Path $path)) {
|
||||||
|
Write-Host "[$name] Path does not exist: $path" -ForegroundColor Yellow
|
||||||
|
Write-Host " Description: $($setting.Description)" -ForegroundColor Gray
|
||||||
|
Write-Host " Current: NOT SET" -ForegroundColor Yellow
|
||||||
|
Write-Host " Recommended: $($setting.Value)" -ForegroundColor Green
|
||||||
|
Write-Host ""
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$currentValue = Get-ItemProperty -Path $path -Name $name -ErrorAction Stop
|
||||||
|
Write-Host "[$name] $($setting.Description)" -ForegroundColor White
|
||||||
|
Write-Host " Path: $path" -ForegroundColor Gray
|
||||||
|
Write-Host " Current: $($currentValue.$name)" -ForegroundColor Yellow
|
||||||
|
Write-Host " Recommended: $($setting.Value)" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host "[$name] $($setting.Description)" -ForegroundColor White
|
||||||
|
Write-Host " Path: $path" -ForegroundColor Gray
|
||||||
|
Write-Host " Current: NOT SET" -ForegroundColor Yellow
|
||||||
|
Write-Host " Recommended: $($setting.Value)" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
Write-Host ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Backup-Settings {
|
||||||
|
Write-Host "Creating backup..." -ForegroundColor Cyan
|
||||||
|
|
||||||
|
$backupContent = "Windows Registry Editor Version 5.00`r`n`r`n"
|
||||||
|
|
||||||
|
foreach ($setting in $regSettings) {
|
||||||
|
$path = $setting.Path
|
||||||
|
$name = $setting.Name
|
||||||
|
|
||||||
|
if (Test-Path $path) {
|
||||||
|
try {
|
||||||
|
$currentValue = Get-ItemProperty -Path $path -Name $name -ErrorAction Stop
|
||||||
|
$regPath = $path -replace "HKLM:\\", "HKEY_LOCAL_MACHINE\"
|
||||||
|
$backupContent += "[$regPath]`r`n"
|
||||||
|
$backupContent += "`"$name`"=dword:$("{0:x8}" -f $currentValue.$name)`r`n`r`n"
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
# Value doesn't exist, note it in backup
|
||||||
|
$regPath = $path -replace "HKLM:\\", "HKEY_LOCAL_MACHINE\"
|
||||||
|
$backupContent += "; [$regPath]`r`n"
|
||||||
|
$backupContent += "; `"$name`" was not set`r`n`r`n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$backupContent | Out-File -FilePath $backupFile -Encoding ASCII
|
||||||
|
Write-Host "Backup saved to: $backupFile" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
|
||||||
|
function Apply-Settings {
|
||||||
|
Write-Host "`n=== Applying UDP/TCP Optimizations ===" -ForegroundColor Cyan
|
||||||
|
|
||||||
|
# Create backup first
|
||||||
|
Backup-Settings
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
$changedCount = 0
|
||||||
|
|
||||||
|
foreach ($setting in $regSettings) {
|
||||||
|
$path = $setting.Path
|
||||||
|
$name = $setting.Name
|
||||||
|
$value = $setting.Value
|
||||||
|
|
||||||
|
# Ensure registry path exists
|
||||||
|
if (-not (Test-Path $path)) {
|
||||||
|
Write-Host "Creating registry path: $path" -ForegroundColor Yellow
|
||||||
|
New-Item -Path $path -Force | Out-Null
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
# Get current value
|
||||||
|
$currentValue = $null
|
||||||
|
try {
|
||||||
|
$current = Get-ItemProperty -Path $path -Name $name -ErrorAction Stop
|
||||||
|
$currentValue = $current.$name
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
$currentValue = $null
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($currentValue -eq $value) {
|
||||||
|
Write-Host "[UNCHANGED] $name = $value" -ForegroundColor Gray
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Set-ItemProperty -Path $path -Name $name -Value $value -Type $setting.Type
|
||||||
|
Write-Host "[APPLIED] $name = $value (was: $currentValue)" -ForegroundColor Green
|
||||||
|
$changedCount++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host "[ERROR] Failed to set $name : $_" -ForegroundColor Red
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "`n$changedCount settings changed." -ForegroundColor Cyan
|
||||||
|
|
||||||
|
if ($changedCount -gt 0) {
|
||||||
|
Write-Host "`n⚠️ IMPORTANT: Restart your computer for changes to take effect!" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Revert-Settings {
|
||||||
|
if (-not (Test-Path $backupFile)) {
|
||||||
|
Write-Error "Backup file not found: $backupFile"
|
||||||
|
Write-Host "Run 'apply' first to create a backup, or restore manually." -ForegroundColor Yellow
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "`n=== Reverting to Backed Up Settings ===" -ForegroundColor Cyan
|
||||||
|
Write-Host "Importing: $backupFile" -ForegroundColor Yellow
|
||||||
|
|
||||||
|
try {
|
||||||
|
$result = reg import $backupFile 2>&1
|
||||||
|
|
||||||
|
if ($LASTEXITCODE -eq 0) {
|
||||||
|
Write-Host "Settings restored successfully!" -ForegroundColor Green
|
||||||
|
Write-Host "`n⚠️ IMPORTANT: Restart your computer for changes to take effect!" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Error "Failed to import registry file: $result"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Error "Error importing registry: $_"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main execution
|
||||||
|
switch ($Action) {
|
||||||
|
"query" {
|
||||||
|
Query-Settings
|
||||||
|
}
|
||||||
|
"apply" {
|
||||||
|
Apply-Settings
|
||||||
|
}
|
||||||
|
"revert" {
|
||||||
|
Revert-Settings
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "`nDone!" -ForegroundColor Cyan
|
||||||
Loading…
x
Reference in New Issue
Block a user