Road to C10 - MSI Pro Z690-A WIFI DDR4 Setup *Stromsparen*


T-Birth

Recommended Posts

Hallo,

um meinen Server weiter zu optimieren, habe auch ich mich dem Thema "Stromsparen" gewidmet.

Gerne möchte ich dazu meinen Beitrag leisten und mein Setup, meine Erfahrungen und meine Settings teilen. Dieser Beitrag dient mir ebenfalls dazu, den Überblick über mein Setup zu behalten.

 

Das Ziel ist es am Ende in Unraid C10 zu erreichen, sofern überhaupt möglich.

Aktuell hänge ich in C8 fest und bin aber für Anregungen und Hilfe sehr offen und dankbar.

 

 

Mein Setup:

 

Unraid -> 6.11.0

 

Intel Core I5-12500T 35W TDP (CM8071504647706)

MSI Pro Z690-A WIFI DDR4 (7D25-012R)

Crucial Ballistix Sport LT DDR4 3000 MHz 32GB (16GB x2), CL15 (BLS2K16G4D30AESB)

Corsair RM550x 80 PLUS Gold (2021)

1x 18TB Seagate Exos X X18 (ST18000NM000J) - Parity

1x 18TB Seagate Exos X X18 (ST18000NM000J) - Data

2x Samsung 980 PRO with Heatsink 2TB - Cache

1x Cruzer Fit (USB für Unraid) -> Hängt direkt am MB über USB 2 Adapter

7x Noctua NF-P12 redux-1300 PWM + Noctua NA-SAVG1

Fractal Design Define R6 Black, schallgedämmt (FD-CA-DEF-R6-BK)

be quiet! Straight Power 11 750W ATX 2.4 (BN283)

2x Noctua Lüfter für Noctua NH-D15 Chromax Black

5x Arctic P14 PWM PST CO schwarz, 140mm (ACFAN00126A)

1x Samsung SSD 970 EVO 1TB - Cache

1x CT1000MX500SSD 1TB - Unassigned Device

2x Western Digital WD Blue 4TB, SATA 6Gb/s (WD40EZRZ) - Disks

 

Messgerät von CSL https://www.amazon.de/gp/product/B0751MGDLH/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

 

 

Aktueller Verbrauch:

 

20.10.2022 (Geringere Schwankungen) -> Siehe "power consumption fix for WebGui"

15 Minuten nach dem Neustart -> 21 Watt

1,5 Stunden nach dem Neustart (Idle) -> 13 Watt

 

02.10.2022 (Starke Schwankungen)

15 Minuten nach dem Neustart -> 23 Watt

1,5 Stunden nach dem Neustart (Idle) -> 17 Watt

 

22.07.2022 (Starke Schwankungen)

15 Minuten nach dem Neustart -> 26 Watt

1,5 Stunden nach dem Neustart (Idle) -> 14 Watt

 

12.07.2022 (Starke Schwankungen)

15 Minuten nach dem Neustart -> 36 Watt

1,5 Stunden nach dem Neustart (Idle) -> 24 Watt

 

Verbesserungspotential:

 

GIGABYTE Z690M AORUS Elite AX DDR4 -> Wurde getestet gegen mein MSI Pro Z690-A WIFI DDR4 (20.10.2022)

Ich habe das Board zum testen bekommen und das neuste Bios (F20b) geflasht. Da war ich im Idle so bei 12-19W. Dann habe ich das Wifi Modul ausgebaut um noch niedriger zu kommen, allerdings komme ich nun nicht mehr unter 20W im Idle und habe starke Spikes im Verbrauch, teilweise war der Verbrauch höher als bei meinem MSI. Im Bios befindet sich auch kein Schalter um Wifi/BT zu deaktivieren, daher gehe ich hier von einem Bug aus.

 

Aus meiner Sicht lohnt sich das Downgrade vom MSI (ATX) auf das kleinere Gigabyte (µATX) nicht wirklich.

 

Lüfter im Winter abklemmen (Auf CPU und HDD Temperatur achten) -> Schafft der Noctua NH-D15 Chromax Black es auch ohne Lüfter die 35 Watt CPU kühl zu halten?

Neues Netzteil -> Corsair RM550x 80 PLUS Gold (2021)

Noctua NF-P12 redux-1300 PWM

 

Hinweise:

 

- Bis auf den Unraid-Stick und das Netzwerkkabel hängt kein weiteres Gerät an den Anschlüssen des Server's.

- Ich verwende nur die iGPU

- Es wird Powertop 2.15 benutzt -> Quelle

- Bios wurde auf die neuste Version aktualisiert -> 7D25v192

- Ich gebe bei Scripten und Änderungen die Quelle mit im Header an, da kann dann jeder nochmal selber den Kontext herausfiltern.

- Ich verwende die Powertop Commands im Go File und als Script.

- Ich verwende das Folder Caching Plugin mit "Folder caching function: Enabled" und "Scan user shares (/mnt/user): No"

- Intel GPU TOP ist installiert

- Undervolt der CPU um 0,05

- Es wird der neuste Cusom Kernel benutzt "5.18.9 20220704 o3 clang15 thin LTO 6.10" -> Guide + Github
(Durch die iGPU kam es zu Transcode fehlern + Random Crash. Diese sind mit dem Kernel behoben.)

 

Aktuelles Problem:

 

Der Server hängt in C8 fest und erreicht nicht C10

Der Server hängt in C6 fest und erreicht nicht C10

 

Syslinux configuration:

 

kernel /bzimage
append initrd=/bzroot intel_pstate=passive isolcpus=4-7 pcie_aspm=force hpet=disable intel_iommu=relax_rmrr mitigations=off

 

Go File:

 

#!/bin/bash
# Start the Management Utility
/usr/local/sbin/emhttp &

# Anfang SSD Wear-Out Docker Schutz Script
# https://forums.unraid.net/topic/112617-ssd-abnutzung-ma%C3%9Fgeblich-reduzieren/
# -------------------------------------------------
# -------------------------------------------------
# RAM-Disk for Docker json/log files
# -------------------------------------------------
# create RAM-Disk on starting the docker service
sed -i '/^  echo "starting \$BASE ..."$/i \
  # move json/logs to ram disk\
  rsync -aH --delete /var/lib/docker/containers/ ${DOCKER_APP_CONFIG_PATH%/}/containers_backup\
  mount -t tmpfs tmpfs /var/lib/docker/containers\
  rsync -aH --delete ${DOCKER_APP_CONFIG_PATH%/}/containers_backup/ /var/lib/docker/containers\
  logger -t docker RAM-Disk created' /etc/rc.d/rc.docker
# remove RAM-Disk on stopping the docker service
sed -i '/^  # tear down the bridge$/i \
  # backup json/logs and remove RAM-Disk\
  rsync -aH --delete /var/lib/docker/containers/ ${DOCKER_APP_CONFIG_PATH%/}/containers_backup\
  umount /var/lib/docker/containers\
  rsync -aH --delete ${DOCKER_APP_CONFIG_PATH%/}/containers_backup/ /var/lib/docker/containers\
  logger -t docker RAM-Disk removed' /etc/rc.d/rc.docker
# Automatically backup Docker RAM-Disk
sed -i '/^<?PHP$/a \
$sync_interval_minutes=30;\
if ( ! ((date('i') * date('H') * 60 + date('i')) % $sync_interval_minutes) && file_exists("/var/lib/docker/containers")) {\
  exec("mkdir /var/lib/docker_bind");\
  exec("mount --bind /var/lib/docker /var/lib/docker_bind");\
  exec("rsync -aH --delete /var/lib/docker/containers/ /var/lib/docker_bind/containers");\
  exec("umount /var/lib/docker_bind");\
  exec("rmdir /var/lib/docker_bind");\
  exec("logger -t docker RAM-Disk synced");\
}' /usr/local/emhttp/plugins/dynamix/scripts/monitor
# Ende SSD Wear-Out Docker Schutz Script

# Anfang vom Powersave Script - Kopie von dem User Script halt nur in Go File
# https://forums.unraid.net/topic/98070-reduce-power-consumption-with-powertop/
# https://forums.unraid.net/topic/79616-haveged-daemon/?tab=comments#comment-903452
# https://forums.unraid.net/topic/109990-kein-spindown-nach-hardwareaustausch-mit-aktiviertem-powertop/?do=findComment&comment=1004380
# https://forums.unraid.net/topic/114852-b365m-package-c-states-strom-sparen/#comment-1078534
# https://forums.unraid.net/topic/111921-why-is-aspm-disabled-in-unraid-while-its-enabled-in-ubuntu/?do=findComment&comment=1053964

# -------------------------------------------------
# Set power-efficient CPU governor
# -------------------------------------------------
/etc/rc.d/rc.cpufreq ondemand

# -------------------------------------------------
# Enable power-efficient ethernet
# -------------------------------------------------

# enable IEEE 802.3az (Energy Efficient Ethernet): Could be incompatible to LACP bonds!
for i in /sys/class/net/eth?; do dev=$(basename $i); [[ $(echo $(ethtool --show-eee $dev 2> /dev/null) | grep -c "Supported EEE link modes: 1") -eq 1 ]] && ethtool --set-eee $dev eee on; done

# Disable wake on lan
for i in /sys/class/net/eth?; do ethtool -s  $(basename $i) wol d; done

# Runtime PM for port ata od PCI devices
for i in /sys/bus/pci/devices/????:??:??.?/ata*/power/control; do echo 'auto' > $i; done

# VM writeback timeout
for i in /proc/sys/vm/dirty_writeback_centisecs; do echo '1500' > $i; done

# -------------------------------------------------
# powertop tweaks
# -------------------------------------------------

# Enable SATA link power management
echo med_power_with_dipm | tee /sys/class/scsi_host/host*/link_power_management_policy

# Runtime PM for I2C Adapter (i915 gmbus dpb)
echo auto | tee /sys/bus/i2c/devices/i2c-*/device/power/control

# Autosuspend for USB device
echo auto | tee /sys/bus/usb/devices/*/power/control

# Runtime PM for disk
echo auto | tee /sys/block/sd*/device/power/control

# Runtime PM for PCI devices
echo auto | tee /sys/bus/pci/devices/????:??:??.?/power/control

# Runtime PM for ATA devices
echo auto | tee /sys/bus/pci/devices/????:??:??.?/ata*/power/control
# Ende vom Powersave Script - Kopie von dem User Script halt nur in Go File

 

 

Aktive Scripte:

 

- Daily -

 

delete.appledouble

#!/bin/bash
echo "Searching for (and deleting) .AppleDouble"
echo "This may take a awhile"
find /mnt/user -maxdepth 9999 -noleaf -type f -name ".AppleDouble" -exec rm "{}" \;

 

delete_dangling_images

#!/bin/bash

docker rmi $(docker images --quiet --filter "dangling=true")

echo Finished
echo if an error shows above, no dangling images were found to delete

 

delete.ds_store

#!/bin/bash
echo "Searching for (and deleting) .DS_Store Files"
echo "This may take a awhile"
find /mnt/user -maxdepth 9999 -noleaf -type f -name ".DS_Store" -exec rm "{}" \;

 

delete._.DS_Store

#!/bin/bash
echo "Searching for (and deleting) .Spotlight-V100"
echo "This may take a awhile"
find /mnt/user -maxdepth 9999 -noleaf -type f -name ".Spotlight-V100" -exec rm "{}" \;

 

delete.Spotlight-V100

#!/bin/bash
echo "Searching for (and deleting) .Spotlight-V100"
echo "This may take a awhile"
find /mnt/user -maxdepth 9999 -noleaf -type f -name ".Spotlight-V100" -exec rm "{}" \;

 

delete.temporaryitems

#!/bin/bash
echo "Searching for (and deleting) .TemporaryItems"
echo "This may take a awhile"
find /mnt/user -maxdepth 9999 -noleaf -type f -name ".TemporaryItems" -exec rm "{}" \;

 

delete.trashes

#!/bin/bash
echo "Searching for (and deleting) .Trashes"
echo "This may take a awhile"
find /mnt/user -maxdepth 9999 -noleaf -type f -name ".Trashes" -exec rm "{}" \;

 

jdownloaderPermissionsFix

*behebt meine Permission probs zb. beim entpacken mit Jdownloader und beim Backup mit Vorta

#!/bin/bash
# https://forums.unraid.net/topic/59696-docker-safe-new-permissions-what-does-it-do/
/usr/local/sbin/newperms /mnt/user/data/downloads/jdownloader
# /usr/local/sbin/newperms /mnt/disks/2116E598E8E4/vorta

 

powertop manually - daily

#!/bin/bash
# Source ->
# https://forums.unraid.net/topic/98070-reduce-power-consumption-with-powertop/
# https://forums.unraid.net/topic/79616-haveged-daemon/?tab=comments#comment-903452
# https://forums.unraid.net/topic/109990-kein-spindown-nach-hardwareaustausch-mit-aktiviertem-powertop/?do=findComment&comment=1004380
# https://forums.unraid.net/topic/114852-b365m-package-c-states-strom-sparen/#comment-1078534
# https://forums.unraid.net/topic/111921-why-is-aspm-disabled-in-unraid-while-its-enabled-in-ubuntu/?do=findComment&comment=1053964
# -------------------------------------------------
# Set power-efficient CPU governor
# -------------------------------------------------
/etc/rc.d/rc.cpufreq ondemand

# -------------------------------------------------
# Enable power-efficient ethernet
# -------------------------------------------------

# enable IEEE 802.3az (Energy Efficient Ethernet): Could be incompatible to LACP bonds!
for i in /sys/class/net/eth?; do dev=$(basename $i); [[ $(echo $(ethtool --show-eee $dev 2> /dev/null) | grep -c "Supported EEE link modes: 1") -eq 1 ]] && ethtool --set-eee $dev eee on; done

# Disable wake on lan
for i in /sys/class/net/eth?; do ethtool -s  $(basename $i) wol d; done

# Runtime PM for port ata od PCI devices
for i in /sys/bus/pci/devices/????:??:??.?/ata*/power/control; do echo 'auto' > $i; done

# VM writeback timeout
for i in /proc/sys/vm/dirty_writeback_centisecs; do echo '1500' > $i; done

# -------------------------------------------------
# powertop tweaks
# -------------------------------------------------

# Enable SATA link power management
echo med_power_with_dipm | tee /sys/class/scsi_host/host*/link_power_management_policy

# Runtime PM for I2C Adapter (i915 gmbus dpb)
echo auto | tee /sys/bus/i2c/devices/i2c-*/device/power/control

# Autosuspend for USB device
echo auto | tee /sys/bus/usb/devices/*/power/control

# Runtime PM for disk
echo auto | tee /sys/block/sd*/device/power/control

# Runtime PM for PCI devices
echo auto | tee /sys/bus/pci/devices/????:??:??.?/power/control

# Runtime PM for ATA devices
echo auto | tee /sys/bus/pci/devices/????:??:??.?/ata*/power/control

 

- At Startup of Array -

 

powertop manually - after array start

#!/bin/bash
# Source ->
# https://forums.unraid.net/topic/98070-reduce-power-consumption-with-powertop/
# https://forums.unraid.net/topic/79616-haveged-daemon/?tab=comments#comment-903452
# https://forums.unraid.net/topic/109990-kein-spindown-nach-hardwareaustausch-mit-aktiviertem-powertop/?do=findComment&comment=1004380
# https://forums.unraid.net/topic/114852-b365m-package-c-states-strom-sparen/#comment-1078534
# https://forums.unraid.net/topic/111921-why-is-aspm-disabled-in-unraid-while-its-enabled-in-ubuntu/?do=findComment&comment=1053964
# -------------------------------------------------
# Set power-efficient CPU governor
# -------------------------------------------------
/etc/rc.d/rc.cpufreq ondemand

# -------------------------------------------------
# Enable power-efficient ethernet
# -------------------------------------------------

# enable IEEE 802.3az (Energy Efficient Ethernet): Could be incompatible to LACP bonds!
for i in /sys/class/net/eth?; do dev=$(basename $i); [[ $(echo $(ethtool --show-eee $dev 2> /dev/null) | grep -c "Supported EEE link modes: 1") -eq 1 ]] && ethtool --set-eee $dev eee on; done

# Disable wake on lan
for i in /sys/class/net/eth?; do ethtool -s  $(basename $i) wol d; done

# Runtime PM for port ata od PCI devices
for i in /sys/bus/pci/devices/????:??:??.?/ata*/power/control; do echo 'auto' > $i; done

# VM writeback timeout
for i in /proc/sys/vm/dirty_writeback_centisecs; do echo '1500' > $i; done

# -------------------------------------------------
# powertop tweaks
# -------------------------------------------------

# Enable SATA link power management
echo med_power_with_dipm | tee /sys/class/scsi_host/host*/link_power_management_policy

# Runtime PM for I2C Adapter (i915 gmbus dpb)
echo auto | tee /sys/bus/i2c/devices/i2c-*/device/power/control

# Autosuspend for USB device
echo auto | tee /sys/bus/usb/devices/*/power/control

# Runtime PM for disk
echo auto | tee /sys/block/sd*/device/power/control

# Runtime PM for PCI devices
echo auto | tee /sys/bus/pci/devices/????:??:??.?/power/control

# Runtime PM for ATA devices
echo auto | tee /sys/bus/pci/devices/????:??:??.?/ata*/power/control

 

- Custom -

*Wenn jemand Cron nicht lesen kann, dann ist hier ein Converter der das ganze aufschlüsselt -> Link

 

power consumption fix for WebGui zu 0 */2 * * *

#!/bin/bash
# https://forums.unraid.net/bug-reports/stable-releases/power-consumption-is-not-stable-since-unraid-610-611-r2148/
pkill -cf /usr/local/emhttp/webGui/nchan
rm /var/run/nchan.pid

 

restartregulary zu 5 5 * * 0

#!/bin/bash
shutdown -r now >/dev/null 2>&1

 

videopreloader zu 25 11,18 * * *

#!/bin/bash
# #####################################
# https://forums.unraid.net/topic/97982-video-preloader-avoids-hdd-spinup-latency-when-starting-a-movie-or-episode-through-plex-jellyfin-or-emby/
# Script:      Video Preloader v1.1
# Description: Preloads the recent video files of a specific path into the RAM to bypass HDD spinup latency
# Author:      Marc Gutt
# 
# Changelog:
# 1.1
# - changed the way how movies are found and sorted to avoid confusing error messages
# - added timestamps to the logs
# - check if the given video paths are used by a docker container (else RAM preloading would not have any effect)
# - better documentation of the settings
# ######### Settings ##################

video_paths=(
  "/mnt/user/data/media/"
)

# the size of a video files must be at least 2GB (to exclude bonus content)
video_min_size="800MB" 

# we preload 60MB of the beginning of the video file into the RAM (raise this value if your video buffers after ~5 seconds)
preload_head_size="60MB"

# we preload 1MB of the end of the video file
preload_tail_size="1MB" 

# if a preload is faster than 0.150 seconds than the video is already preloaded to the RAM
preload_threshold="0.150"

# preload only video files with specific extensions https://support.plex.tv/articles/203824396-what-media-formats-are-supported/
video_ext='avi|mkv|mov|mp4|mpeg'

# preload only subtitle files with specific extensions # https://support.plex.tv/articles/200471133-adding-local-subtitles-to-your-media/#toc-1
sub_ext='srt|smi|ssa|ass|vtt'

# we use 50% of our free RAM for preloading (it will be still free, check https://www.linuxatemyram.com/)
free_ram_usage_percent=50

# set this to "1" to remove all preloads (this is only usefull if you want to force reading from Disk)
preclean_cache=0

# notify if the execution was sucessful (errors produce notifications by default)
notification=0

# #####################################
# 
# ######### Script ####################

# timestamping logs
exec &> >(stdbuf -o0 sed 's/%/%%/g' | xargs -d '\n' -I {} date '+%F %T {}')

# make script race condition safe
if [[ -d "/tmp/${0///}" ]] || ! mkdir "/tmp/${0///}"; then exit 1; fi; trap 'rmdir "/tmp/${0///}"' EXIT;

# check user settings
video_min_size="${video_min_size//[!0-9.]/}" # float filtering https://stackoverflow.com/a/19724571/318765
video_min_size=$(awk "BEGIN { print $video_min_size*1000000}") # convert MB to Bytes
preload_head_size="${preload_head_size//[!0-9.]/}"
preload_head_size=$(awk "BEGIN { print $preload_head_size*1000000}")
preload_tail_size="${preload_tail_size//[!0-9.]/}"
preload_tail_size=$(awk "BEGIN { print $preload_tail_size*1000000}")

# check if paths are used in docker containers
if docker info > /dev/null 2>&1; then
  # get docker mounts of all running containers
  # shellcheck disable=SC2016
  docker_mounts=$(docker ps -q | xargs docker container inspect -f '{{$id := .Id}}{{range .Mounts}}{{if .Source}}{{printf $id}}:{{.Source}}{{println}}{{end}}{{end}}' | grep -v -e "^$")
  for path in "${video_paths[@]}"; do
    if [[ $docker_mounts != *"$path"* ]]; then
      /usr/local/emhttp/webGui/scripts/notify -i alert -s "Plex Preloader failed!" -d "$path is not used by a docker container!"
      exit 1
    fi
  done
fi

# clean the read cache
if [ "$preclean_cache" = "1" ]; then
  sync; echo 1 > /proc/sys/vm/drop_caches
fi

# preload calculation
preloaded=0
skipped=0
preload_total_size=$((preload_head_size + preload_tail_size))
free_ram=$(free -b | awk '/^Mem:/{print $7}')
free_ram=$((free_ram * free_ram_usage_percent / 100))
echo "Available RAM: $(numfmt --to si $free_ram)"
preload_amount=$((free_ram / preload_total_size))
preload_size=$(( preload_head_size + preload_tail_size ))
echo "Amount of videos that can be preloaded: $preload_amount (each video occupies $(numfmt --to si $preload_size))"

# find all video files
while IFS= read -r -d '' file; do
  video_files+=("$file")
done < <(find "${video_paths[@]}" -not -path '*/.*' -size +"$video_min_size"c -regextype posix-extended -regex ".*\.($video_ext)" -printf "%T@ %p\0")

# sort all video files
while IFS= read -r -d '' file; do
  video_files_sorted+=("$file")
done < <(printf '%s\0' "${video_files[@]}" | sort -znr)

# preload video files into RAM
for i in "${!video_files_sorted[@]}"; do 
  # stop if we reached our preload limit
  if [[ $i -ge $preload_amount ]]; then
    break;
  fi
  # remove modification time
  file=$(echo "${video_files_sorted[$i]}" | cut -f2- -d" ")
  TIMEFORMAT=%R
  seconds=$(time ( head -c "$preload_head_size" "$file" ) 2>&1 1>/dev/null )
  if awk 'BEGIN {exit !('"$seconds"' >= '"$preload_threshold"')}'; then
    preloaded=$((preloaded + 1))
    echo "Preloaded $file in $seconds seconds"
  else
    echo "Skipped $file as loading needed only $seconds"
    skipped=$((skipped + 1))
  fi
  tail -c "$preload_tail_size" "$file" > /dev/null
  video_path=$(dirname "$file")
  # fetch subtitle files
  find "$video_path" -not -path '*/.*' -regextype posix-extended -regex ".*\.($sub_ext)" -print0 | 
    while IFS= read -r -d '' file; do 
      echo "Preloaded $file"
      cat "$file" >/dev/null
    done
done

# notification
if [[ $preloaded -eq 0 ]] && [[ $skipped -eq 0 ]]; then
  /usr/local/emhttp/webGui/scripts/notify -i alert -s "Plex Preloader failed!" -d "No video file has been preloaded (wrong path?)!"
elif [ "$notification" = "1" ]; then
  /usr/local/emhttp/webGui/scripts/notify -i normal -s "Plex Preloader has finished" -d "$preloaded preloaded (from Disk) / $skipped skipped (already in RAM)"
fi

 

- Wird aktuell nicht verwendet weil keine dGPU verbaut aber trotzdem interessant zum Stromsparen -

 

nvidia_powersave_by_spaceinvader

#!/bin/bash
# Source: https://www.youtube.com/watch?v=KD6G-tpsyKw&list=PLUNrs1P9BJNB6P3ZzqPm6LQ8iJXguv4cQ&index=18
# check for driver
command -v nvidia-smi &> /dev/null || { echo >&2 "nvidia driver is not installed you will need to install this from community applications ... exiting."; exit 1; }
echo "Nvidia drivers are installed"
echo
echo "I can see these Nvidia gpus in your server"
echo
nvidia-smi --list-gpus 
echo
echo "-------------------------------------------------------------"
# set persistence mode for gpus ( When persistence mode is enabled the NVIDIA driver remains loaded even when no active processes, 
# stops modules being unloaded therefore stops settings changing when modules are reloaded
nvidia-smi --persistence-mode=1
#query power state
gpu_pstate=$(nvidia-smi --query-gpu="pstate" --format=csv,noheader);
#query running processes by pid using gpu
gpupid=$(nvidia-smi --query-compute-apps="pid" --format=csv,noheader);
#check if pstate is zero and no processes are running by checking if any pid is in string
if [ "$gpu_pstate" == "P0" ] && [ -z "$gpupid" ]; then
echo "No pid in string so no processes are running"
fuser -kv /dev/nvidia*
echo "Power state is"
echo "$gpu_pstate" # show what power state is
else
echo "Power state is" 
echo "$gpu_pstate" # show what power state is
fi
echo
echo "-------------------------------------------------------------"
echo
echo "Power draw is now"
# Check current power draw of GPU
nvidia-smi --query-gpu=power.draw --format=csv
exit

 

powersavingfornvidia

# !/bin/bash
# https://www.reddit.com/r/unRAID/comments/nq1fqu/nvidia_p2000_power_state_idle/
    
#nvidia-smi --persistence-mode=1
nvidia-persistenced

fuser -v /dev/nvidia* 

 

Screenshots:

 

481190816_Bildschirmfoto2022-10-20um20_10_11.thumb.png.609c5f6a2adf0a739e090c545e1cff29.png

 

441284679_Bildschirmfoto2022-10-20um21_10_06.thumb.png.99ea7707d50b95fcd01b111d3081dae3.png

 

IMG_2022-10-20-20-37-13-328.thumb.jpg.e8b7dee65bf2d8cde1ea72f35e52b248.jpgIMG_2022-10-20-20-37-58-926.thumb.jpg.6d1552cd6f3cf5fdefbdde0781db3a36.jpgIMG_2022-10-20-20-38-16-461.thumb.jpg.4354abaf6cb69dfe284f04536548bbc7.jpgIMG_2022-10-20-20-38-23-685.thumb.jpg.d1218007371594c0deda94b56bed98cf.jpgIMG_2022-10-20-20-38-31-163.thumb.jpg.c36c913be0e10360fcd9227c54669eaa.jpgIMG_2022-10-20-20-38-38-330.thumb.jpg.4505790a095081d2709e759331a45cfb.jpgIMG_2022-10-20-20-38-45-680.thumb.jpg.27b2562b6833eced7a16cf478a7b5cad.jpgIMG_2022-10-20-20-38-54-771.thumb.jpg.4a39441af6ae578b94ef908bc6c33601.jpgIMG_2022-10-20-20-39-52-300.thumb.jpg.865062995b2b4630fcf2dc93d30b6252.jpgIMG_2022-10-20-20-39-57-469.thumb.jpg.08a98612e053abd8f51be5cad84e0a57.jpgIMG_2022-10-20-20-40-05-962.thumb.jpg.507f6305a743377b28e28528a3bc2831.jpgIMG_2022-10-20-20-40-16-425.thumb.jpg.2a89b1081fb15d8cd5e69008b89d1961.jpgIMG_2022-10-20-20-50-29-447.thumb.jpg.9667d93cf1937b8308d89ce7d0a8def4.jpgIMG_2022-10-20-20-50-40-143.thumb.jpg.b9c36158e3a10b772be0b0ea0f15d714.jpgIMG_2022-10-20-20-50-49-526.thumb.jpg.85360e4ededeac12a017d2f1cc8f6307.jpgIMG_2022-10-20-20-50-54-720.thumb.jpg.074a9d9c7083cc46529852948eecf380.jpgIMG_2022-10-20-20-54-11-010.thumb.jpg.468cd764c1930f14f9a159ca4045913b.jpgIMG_2022-10-20-20-54-26-435.thumb.jpg.f19181eef7e091e1fd802afdf1283451.jpgIMG_2022-10-20-20-54-33-272.thumb.jpg.f55306ef70971bbffe85712c81075992.jpgIMG_2022-10-20-20-54-47-431.thumb.jpg.19c5ceb66d88cc8c0f45a929e6e3c5ac.jpgIMG_2022-10-20-20-54-59-983.thumb.jpg.ac83b644da73858b3ea169db2093b094.jpgIMG_2022-10-20-20-55-03-601.thumb.jpg.1f6d884460a36d495a090a41d5523b51.jpgIMG_2022-10-20-20-55-09-491.thumb.jpg.b220a0e7a3179bb66a1b8de76a93fd3a.jpgIMG_2022-10-20-20-55-15-785.thumb.jpg.35e51fcf67dad1a11524227686a98c35.jpg

 

Interessante Quellen:

 

Häufig gestellte Fragen

Sparsame gebrauchte mATX / ITX Boards mit 2x M.2, 6x/8x SATA

Die sparsamsten Systeme (<30W Idle)

Sammlung von bekannten Problemen beim erreichen vom C6/C7 Package State

M.2 im M2A_CPU mit Betriebssystem verhindert bessere Package C-States als C7

 

Changelog:

 

20.10.2022 - Aktualisiert

02.10.2022 - Aktualisiert

12.07.2022 - Initialpost

 

IMG_2022-10-20-20-55-37-045.jpg

Edited by T-Birth
  • Thanks 1
Link to comment

Nur als Info: Ich erreiche mit unRAID 6.10 nur C7, während ich mit 6.9 auf C9 komme:

https://forums.unraid.net/topic/105909-mein-10-zoll-server/?do=findComment&comment=1143532

 

Es können also auch die Treiber des OS ausschlaggebend sein.

 

Eventuell solltest du mal mit einem Ubuntu USB Stick messen (HDDs dann alle abklemmen, damit die erstmal außen vor sind).

 

9 hours ago, T-Birth said:

Noctua NH-D15 chromax.black

5x Arctic P14 PWM

Also insgesamt 6 Lüfter oder ist auch ein Arctic auf dem Noctua? Wie auch immer, die können auch gut Strom verbrauchen. Zieh mal testweise alle im Betrieb raus und ermittle was die ziehen.

 

 

  • Thanks 1
Link to comment

Ah, danke für die Antwort. Also höher wie C7 kommst du auch nicht, interessant.

Ich probiere noch etwas herum, dabei sind die Punkte "Native PCIE Enable" und "Native ASPM" noch zwei Sachen mit denen ich herumspiele.  

 

Die Lüfter laufen kaum (mit 200-350 rpm) und halten den Server bei 25 Grad.

Ich habe jetzt noch den Thermalright LGA1700-BCF organisiert und erhoffe mir dadurch noch etwas bessere Temperaturen (denke max. 2 Grad) und damit konstant niedrigere Drehzahlen bei den Lüftern. Die Lüfterkurve ist auf Silent eingestellt und auf diese mag ich auch nicht wirklich verzichten.

 

Die Lüfter sind insgesamt 7 Stück. 5 Gehäuselüfter und 2 auf dem CPU-Kühler.

Hier überlege ich vllt auf die 0RPM Variante umzusteigen.

 

Ich denke wenn ich im Idle auf 15 Watt komme, bin ich für das Setup sehr zufrieden. Potential sehe ich definitiv noch im Netzteil, in den Lüftern und im C10. Ob ich ohne Turbo Modus höher komme als C6 steht auch noch aus.

 

Sieht du bzw. jemand noch Verbesserungspotential an den Bios Settings bzw. an sonstigen Einstellungen ?

 

Edited by T-Birth
Link to comment
1 hour ago, T-Birth said:

Die Lüfter sind insgesamt 7 Stück. 5 Gehäuselüfter und 7 auf dem CPU-Lüfter.

Wie gesagt. Zieh alle mal kurz raus und schau was die ausmachen. Es gibt Lüfter die verbrauchen 2W, andere 0,1W.

 

1 hour ago, T-Birth said:

Also höher wie C7 kommst du auch nicht, interessant.

Komme ich schon, aber nur mit Ubuntu, wenn ich LAN Kabel und USB Stick entferne. Keine Ahnung warum ich bei Unraid 6.9 auch mit den Komponenten auf C9 komme. Denke mal irgendeine Änderung im Kernel wird dafür ausschlaggebend sein. Allerdings unterscheiden sich Ubuntu und Unraid manchmal auch beim ASPM Verhalten:

 

MSI hat hier in der Vergangenheit übrigens selten mit niedrigen C-States geglänzt. Auch Asrock fällt damit immer wieder auf (hat dann aber doch wieder vereinzelte Boards, die tiefer schlafen). Eventuell lohnt auch mal mit Windows zu prüfen ob die niedrigsten C-States überhaupt erreicht werden.

 

Link to comment
8 hours ago, mgutt said:

Also insgesamt 6 Lüfter oder ist auch ein Arctic auf dem Noctua? Wie auch immer, die können auch gut Strom verbrauchen.

ja, sie verbrauchen Strom.

Aber wenn man den Daten des Herstellers glaubt sind die (unbeleuchteten) Modelle P12 PWM mit 1,44 W/Stück meiner persönlichen Meinung nach noch akzeptabel. Auch wenn es sich natürlich bei 6 Stück doch zu einer nicht unerheblichen Summe von knapp unter 9 W addiert.

"Anlaufspannung: 3.9 V; Stromstärke/ Spannung: 0.12 A / 12 V"

 

Link to comment
5 hours ago, T-Birth said:

Die Lüfter sind insgesamt 7 Stück. 5 Gehäuselüfter und 2 auf dem CPU-Kühler.

Hier überlege ich vllt auf die 0RPM Variante umzusteigen.

Solltest Du die P14 wegen dem Luftdurchsatz/-Druck gewählt haben: Beachte,d aß die 0-dB Variante dahingehend andere Werte hat.

Achja, die elektrische Leistung liegt im Maximum bei den 0dB Modellen soger noch höher.

Auch habe ich die 0dB (Zero) Modelle nur mit RGB gefunden. Muß man ja nicht anschließen, aber irgendwie schade dafür Geld auszugeben, wenn man es sowieso nicht braucht.

 

Will sagen: Schau Dir vorher genau an, was Du willst oder brauchst.

Link to comment

Bei mir kostet jeder belegte m.2 Slot  1C-State .Hatte mal einen Test gemacht wo ich nur den Unraid Stick mit einem USB Stick als Datenträger getestet ,da ging es auf C9 und C10 runter. Habe  den Unraid Stick jetzt mit einem Adapter direkt auf dem MB gesetzt (bringt auch etwas Ersparnis). Lüfter habe ich die Noctua Redux 900 . 120mm (4 Pin !!!) verbaut. 0.3W Verbrauch nur. Was mich stört und ich auch bis jetzt nicht lösen konnte sind 4-6 Watt Schwankungen im Idle. Auch wenn kein Docker oder Sonstiges läuft Bleibt die Idle Last instabil

 

Edited by Bengon
Link to comment
21 hours ago, Bengon said:

Bei mir kostet jeder belegte m.2 Slot  1C-State .Hatte mal einen Test gemacht wo ich nur den Unraid Stick mit einem USB Stick als Datenträger getestet ,da ging es auf C9 und C10 runter. Habe  den Unraid Stick jetzt mit einem Adapter direkt auf dem MB gesetzt (bringt auch etwas Ersparnis). Lüfter habe ich die Noctua Redux 900 . 120mm (4 Pin !!!) verbaut. 0.3W Verbrauch nur. Was mich stört und ich auch bis jetzt nicht lösen konnte sind 4-6 Watt Schwankungen im Idle. Auch wenn kein Docker oder Sonstiges läuft Bleibt die Idle Last instabil

 

 

Hast du zufällig Mal eine Quelle für die Lüfter. Ich finde die redux 900 nur mit 3 Pin und nicht mit PWM.

 

Tendenziell wäre ich einer Neuanschaffung zugunsten der Energieeffizienz nicht abgeneigt.

 

Wenn noch jemand 120/140mm Lüfter kennt die sparsam im Verbrauch sind und wenn möglich mit PWM, dann immer raus damit.

 

Wenn ich den Filter auf Geizhals nutze, ist das im Ergebnis ehr unbefriedigend.

 

 

Edited by T-Birth
Link to comment
1 hour ago, T-Birth said:

 

Hast du zufällig Mal eine Quelle für die Lüfter. Ich finde die redux 900 nur mit 3 Pin und nicht mit PWM.

 

Tendenziell wäre ich einer Neuanschaffung zugunsten der Energieeffizienz nicht abgeneigt.

 

Wenn noch jemand 120/140mm Lüfter kennt die sparsam im Verbrauch sind und wenn möglich mit PWM, dann immer raus damit.

 

Wenn ich den Filter auf Geizhals nutze, ist das im Ergebnis ehr unbefriedigend.

 

 

Entschuldigung,ich habe den Lüfter verwechselt .habe die Redux 1300 .Den gibt es mit drei oder 4 Pin. Der ist zwar mit 0.6 Watt angegeben aber braucht viel weniger wenn dieser nicht voll ausgelastet ist. Habe 4 Stück verbaut (kleinstmögliche Drehzahl) und der Verbrauch am Messgerät ist geschätzt (wegen allgemeiner Last schwer erkennbar) weniger als 1 Watt

Link to comment

Danke für eure Tipps, also ich habe alle Lüfter gegen Noctua NF-P12 redux-1300 PWM + Noctua NA-SAVG1 getauscht. Inklusive der CPU-Lüfter.

Insgesamt pendelt sich das System nun im Idle nicht mehr bei 28 Grad ein sondern bei 30 Grad und wird auch unter Last nicht wärmer wie 47 Grad.

Und das bei unseren aktuellen Temperaturen -> Wohnzimmertemperatur 23,5-25 Grad und Außentemperatur über 34 Grad.

 

Mir war ebenfalls wichtig das dieses System vollständig Silent ist und damit im Wohnzimmer stehen kann, mit den Noctua NF-P12 redux-1300 PWM + Noctua NA-SAVG1 ist das Kriterium vollständig erfüllt. Das System ist selbst unter Last nicht wahrnehmbar. Die Lüfterkurve im Bios wurde natürlich angepasst.

Kleine Randnotiz:

 

Mit den alten Arctic P14 PWM PST CO schwarz geriet das Gehäuse irgendwie in Schwingung und erzeugte ein Störgeräusch welches ziemlich random aufgetreten ist. Ich bin da auch nicht der einzige dem es so geht. Mit den Noctua NF-P12 redux-1300 PWM scheint das nicht der Fall zu sein. Sehr gut !

 

Ebenfalls wurde das Netzteil zu einem Corsair RM550x 80 PLUS Gold (2021) geupgradet.

Außerdem habe ich MSI kontaktiert, mit der bitte, ob es möglich ist ein Bios zu erhalten welches cec2019 als Option beinhaltet. Falls das nicht möglich sein sollte, welches dann die idealen Powersave Settings im Bios sind. Dazu habe ich noch geschrieben das ich es nicht schaffe höher als C6 zu kommen, weder in Ubuntu oder Windows noch in Unraid.

 

Hier ist die Antwort von MSI:

 

Sehr geehrte Damen und Herren,
 
vielen Dank für Ihre Anfrage.
 
In der Regel können die Systeme bis zu C8 State runter gehen, für C10 state muss der Modern Standby Modus aktiv sind.
Dies ist in der Regel nur bei Komplett Systemen möglich, da hier die verbaute Hardware auf das system abgestimmt sein muss.

Für den C8 State müssen bestimmte Bedingungen erfüllt sein, sonst erreichen die Systeme maximal C6 State.

Intel C-State = Enabled
C1E Support = Enabled
Package C State Limit = C10

Windows Power Plan set as "Power Saver".
M.2 SSD must be installed on the PCIe lanes from PCH.
SATA devices are not allowed.



Für CEC Test werden diese Einstellungen gemacht im BIOS.

ErP Ready = Enabled
Intel C-State = Enabled
C1E Support = Enabled
Package C State Limit = C10

Mit freundlichen Grüßen
Ihr MSI Tech. Support Team

 

Insgesamt ist der Verbrauch durch die Maßnahmen im Durchschnitt um gut 10 Watt gesunken.

Das Ziel C10 (für mich maximal C8 laut MSI?) steht aber ebenfalls noch aus, hier muss sicherlich noch von Unraid nachgebessert werden. Da auch hier immer starke Schwankungen im Verbrauch auftreten.

Edited by T-Birth
Link to comment
  • 3 weeks later...

Beitrag muss von mir angepasst werden.

Im Moment erreiche ich mit meinen settings immer C8 und das Setup hat sich leicht geändert.

Es hängt keine SSD mehr am SATA und der NVME Slot der direkt an die CPU angebunden ist wird auch nicht verwendet. Dann klappt es auch mit konstant C8 nach Powertop.

 

C10 war mir aber bis jetzt verwehrt.

 


Kleiner Test nebenbei:

Ich habe ein Z690M AORUS ELITE AX DDR4 (rev. 1.x) zum testen bekommen und das neuste Bios geflasht. Da war ich im Idle so bei 12-19W. Dann habe ich das Wifi Modul ausgebaut um noch niedriger zu kommen aber Pustekuchen, nun komme ich nicht unter 20W im Idle und habe starke Spikes im Verbrauch. Im Bios befindet sich auch kein Schalter um Wifi/BT zu deaktivieren, daher gehe ich hier von einem Bug aus.

 

Daher lohnt sich das Downgrade von MSI auf das kleinere Gigabyte für mich nicht so wirklich.

Edited by T-Birth
Link to comment

Find deine Reise auf jeden Fall super, und freu mich auf Updates habe das gleiche Mainboard und auch viele Punkte geklaut :) 

Mein Setup sieht aber sonst etwas anders aus:

  • Intel 12600K
  • 2x 32GB DDR-4 Mushkin Essentials 3200Mhz bei 1,2V
  • SanDisk Ultra 3D 1TB M.2 Cache SSD (wegen der Nachricht von MSI nicht mehr im CPU PCI-E Slot, danke dafür)
  • RTX 3050
  • 3x Samsung QVO 8TB SSDs als Raid
  • Transcend JetFlash 780 8GB als Unraid Stick

  • Seasonic Prime PX-450

  • 1x Noctua NF-P12 redux-1300 PWM (auch wegen deinem Guide laufen ca. bei 600 RPM)

  • 3x Noctua NF-P12 redux-1700 PWM (hatte ich noch rumliegen und die Differenz im Watt Verbrauch zu den 1300 war jetzt auch nicht so krass, dass ich die wechseln will -  laufen ca. bei 600 RPM)

Ich hab halt eine Grafikkarte drin weil ich auch das Ding teilweise zum Zocken benutze am TV. Ich hab gestern testweise mein Seasonic 650W Gold Netzteil gegen ein Seasonic Prime PX-450 getauscht und das war wirklich ein Sprung nach vorne, damit bin ich idle von so ca. 58-62w auf Idle 45-50w gesprungen, glaube die CPU erreicht jetzt einen niedrigeren C-State. Allerdings ist mein bester C-State fürs Paket (Pkg(HW) in powertop) C3image.png.7715fed946be47b89e432368b48d27bd.png

Die  Kerne gehen teilweise auch tiefer. Schätze das hat dann aber was mit der Grafikkarte zu tun, oder damit, dass dann per USB eben noch eine USV und so ein Logitech Tastatur Dongle per USB angeschlossen sind. Ansonsten habe ich die go File und auch viele Bios Einstellungen übernommen. Ich würde gerne noch im C-State des Packages weiter runterkommen aber schätze das wird eher nix mehr leider braucht die RTX im idle P8 auch 8Watt, manchmal zeigt GPU Statistics auch 12Watt an. Aber angefangen als ich den Thread von dir hier gesehen habe war ich Idle um die 72Watt also hat sich da schon einiges getan, deswegen Danke und hoffe hier im Thread tut sich noch was :) Vielleicht liefert MSI ja auch nochmal n nettes Bios Update oder so.

Edited by Blobbonator
  • Thanks 1
Link to comment

Ich habe meinen Beitrag auf den aktuellen Stand gebracht, inklusive Bios etc. @Blobbonator

Also noch Stromsparender als mit diesen Settings habe ich das Bios nicht hinbekommen. Sicherlich kann man hier noch das ein oder andere mit Undervolting machen, allerdings bin ich so ganz zufrieden und werde es erstmal dabei belassen.

 

Außerdem habe ich etwas mehr in den Beitrag integriert um anderen einen besseren Überblick über das Gesamtpaket zu verschaffen. Und wenn du dir die Scripte anschaust, dann wirf unbedingt einen Blick in die Quellen im Header. Da sollte noch etwas Lesestoff zu holen sein.

 

Also alleine durch die RTX 3050 wirst du kaum über die C3 flutschen, kannst ja mal meine Settings Copy/Pasten und schauen ob nicht vllt doch C6 drin ist. Ich denke aber ehr nicht. Trotzdem hast du schon ein gutes Ergebnis erzielt und ich freue mich das mein kleiner Beitrag doch dem ein oder anderen hilft.

Edited by T-Birth
  • Like 1
Link to comment
  • 5 weeks later...

Danke für die Skripte, ich hab dann noch ein kleines Update ich hab die Grafikkarte geupdated auf eine AMD RX6750 die wesentlich mehr Power hat als die RTX3050 und da dann auch noch auf was interessantes gestoßen, bei der AMD Karte springt die CPU sobald die VM die diese verwendet aus ist in den C6 Idle.Das höchste der Gefühle mit ner 1650 oder eben der 3050 war C3.

Scheinbar gab es da noch Optimierungspotenzial. Ich habe vorher immer mit meiner USV davor den Stromverbrauch gemessen Powerwalker VI 650SE LCD die auch fix 10Watt extra verbraucht hat. Gemessen ohne USV und der neuen GPU komm ich im Idle auf ~22Watt und das obwohl ich jetzt viel mehr Spaß beim Gaming hab :). Ich denke die USV werde ich dann mittelfristig austauschen

Hätte nicht gedacht dass 22Watt machbar ist mit ner 12600K. Bin auf jeden Fall zufrieden hab mit der AMD Karte aber ein paar Boot Parameter nicht übernehmen können da gab es teilweise Probleme, deswegen gibt es da sicher noch minimal Optimierungspotenzail, aber der Stromverbrauch stimmt. Insofern bin ich voll zufrieden das waren doch größere Ersparnisse als gedacht.

Edited by Blobbonator
  • Thanks 1
Link to comment
  • 3 months later...
On 7/13/2022 at 10:04 AM, MPC561 said:

Ich hab gerade nochmal bei meinem Asrock B560m Pro4 nachgeschaut. Auch "nur" C7 maximal mit 6.10.3. 

 

Gruss,

Joerg

@sylus

 

Hi,

 

kurze Frage an euch beide.

 

Mit welchen Settings habt ihr es geschafft bis C7 zu kommen?

 

Kommen derzeitig nicht weiter als Package State C3.

 

Greetz

Link to comment

Das ganze Testen mit purer Hardware:

Board, CPU, RAM, Unraid Stick, eine NVME. Keine PCIe Karten oder ähnliches.

Dann kein Docker und keine VM laufend. Dann mit Powertop nach hochfahren des Servers und 30 Minuten warten (Bildschirm aus am Server) messen, sprich anzeigen lassen welcher C Pkg State erreicht wird.

 

Danach den anderen Kram wieder aktivieren und sehen ob der Pkg state immer noch halbwegs ok ist.

 

 

Davor natürlich diese groben Bioseinstellungen:

- Advanced/CPU:

            *CPU States Support Ebabled

               - Enhanced Halt State (C1E) Enabled

               - CPU C6 State support Enabled. (7 auch usw.)          

               - Package Support Max Wert C10 glaub ich

- Advanced/Chipset Configuration:

            - PCIE ASPM Support Enabled L1

            - PCH PCIE ASPM Support Enabled L1

            - DMI ASPM Support Enabled L1

- Advanced/Storage Configuration

            - SATA Aggressive Link Power Management Enabled

            - Hard Disk S.M.A.R.T. -  Disabled (Sonst weckt das Bios schlafende Platten, Unraid macht das via SW sowieso)

 - Advanced/USB Configuration -- Die Ports abschalten die man nicht braucht.

 

Niemals bei einem Stromspareintrag AUTO stehen lassen, immer ENABLE.

 

 

Edited by MPC561
  • Upvote 2
Link to comment
Just now, diLu said:

Evtl komme ich ja deswegen nicht über C3 hinaus.

Das wird ziemlich sicher so sein. Was du probieren könntest (passende Slots vorausgesetzt), die Slots durchprobieren. Ne echte Faustformel gibt es leider nicht, scheint nach Tagesform der BIOS Programmierer abhängig zu sein. Aber manchmal ist es für c-states besser wenn der Slot wahlweise am Chipsatz angebunden ist und dann wieder wenn der Slot direkt an der CPU angebunden ist. Da hilft nur ausprobieren 🤷‍♂️

  • Like 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.