GithubHelp home page GithubHelp logo

Super Micro X10DRU-i+ zones about smfc HOT 6 OPEN

petersulyok avatar petersulyok commented on June 15, 2024
Super Micro X10DRU-i+ zones

from smfc.

Comments (6)

petersulyok avatar petersulyok commented on June 15, 2024

Hi @alexhelms, any feedback on this?

from smfc.

MrMeeb avatar MrMeeb commented on June 15, 2024

Hi Peter, I also have an X10DRU-i+ in a SYS-6028U-TR4T+ - it has 4 internal chassis fans. When enabling SMFC in it's default state, the fans respond in one half of the server but not the other it would seem:

FAN1             | 4800.000   | RPM        | ok    | 300.000   | 500.000   | 700.000   | 25300.000 | 25400.000 | 25500.000 
FAN2             | 4600.000   | RPM        | ok    | 300.000   | 500.000   | 700.000   | 25300.000 | 25400.000 | 25500.000 
FAN3             | na         |            | na    | na        | na        | na        | na        | na        | na        
FAN4             | na         |            | na    | na        | na        | na        | na        | na        | na        
FAN5             | na         |            | na    | na        | na        | na        | na        | na        | na        
FAN6             | na         |            | na    | na        | na        | na        | na        | na        | na        
FAN7             | 9300.000   | RPM        | ok    | 300.000   | 500.000   | 700.000   | 25300.000 | 25400.000 | 25500.000 
FAN8             | 9300.000   | RPM        | ok    | 300.000   | 500.000   | 700.000   | 25300.000 | 25400.000 | 25500.000 

I'm not all that familiar with ipmitool, but entering your suggested command of ipmitool raw 0x30 0x70 0x66 0x01 zone 50 showed zones 0 controlling FAN1 and FAN2, and 1 controlling FAN7 and FAN8.

It seems that SMFC is only controlling zone 0 currently - setting both zones to 75% with ipmitool raw 0x30 0x70 0x66 0x01 zone 75, then enabling SMFC via systemctl start smfc.service only sees FAN1 and FAN2 drop in speed.

Config, for good measure:

#   smfc.conf
#   smfc service configuration parameters
#


[Ipmi]
# Path for ipmitool (str, default=/usr/bin/ipmitool)
command=/usr/bin/ipmitool 
# Delay time after changing IPMI fan mode (int, seconds, default=10)
fan_mode_delay=10
# Delay time after changing IPMI fan level (int, seconds, default=2)
fan_level_delay=2
# CPU and HD zones are swapped (bool, default=0).
swapped_zones=0


[CPU zone]
# Fan controller enabled (bool, default=0)
enabled=1
# Number of CPUs (int, default=1)
count=1
# Calculation method for CPU temperatures (int, [0-minimum, 1-average, 2-maximum], default=1)
temp_calc=1
# Discrete steps in mapping of temperatures to fan level (int, default=6)
steps=6
# Threshold in temperature change before the fan controller reacts (float, C, default=3.0)
sensitivity=3.0
# Polling time interval for reading temperature (int, sec, default=2)
polling=2
# Minimum CPU temperature (float, C, default=30.0)
min_temp=30.0
# Maximum CPU temperature (float, C, default=60.0)
max_temp=60.0
# Minimum CPU fan level (int, %, default=35)
min_level=35
# Maximum CPU fan level (int, %, default=100)
max_level=100
# Optional parameter, it will be generated automatically for Intel CPUs and must be specified manually for AMD CPUs.
# Path for CPU sys/hwmon file(s) (str multi-line list, default=/sys/devices/platform/coretemp.0/hwmon/hwmon*/temp1_input)
# hwmon_path=/sys/devices/platform/coretemp.0/hwmon/hwmon*/temp1_input
#            /sys/devices/platform/coretemp.1/hwmon/hwmon*/temp1_input
# or
# hwmon_path=/sys/bus/pci/drivers/k10temp/0000*/hwmon/hwmon*/temp1_input


[HD zone]
# Fan controller enabled (bool, default=0)
enabled=0
# Number of HDs (int, default=1)
count=1
# Calculation of HD temperatures (int, [0-minimum, 1-average, 2-maximum], default=1)
temp_calc=1
# Discrete steps in mapping of temperatures to fan level (int, default=4)
steps=4
# Threshold in temperature change before the fan controller reacts (float, C, default=2.0)
sensitivity=2.0
# Polling interval for reading temperature (int, sec, default=10)
polling=10
# Minimum HD temperature (float, C, default=32.0)
min_temp=32.0
# Maximum HD temperature (float, C, default=46.0)
max_temp=46.0
# Minimum HD fan level (int, %, default=35)
min_level=35
# Maximum HD fan level (int, %, default=100)
max_level=100
# Names of the HDs (str multi-line list, default=)
# These names MUST BE specified in '/dev/disk/by-id/...' form!
hd_names=
# Optional parameter, it will be generated automatically based on the disk names.
# List of files in /sys/hwmon file system or 'hddtemp' (str multi-line list, default=)
# hwmon_path=/sys/class/scsi_disk/0:0:0:0/device/hwmon/hwmon*/temp1_input
#            /sys/class/scsi_disk/1:0:0:0/device/hwmon/hwmon*/temp1_input
#            hddtemp
# Standby guard feature for RAID arrays (bool, default=0)
standby_guard_enabled=0
# Number of HDs already in STANDBY state before the full RAID array will be forced to it (int, default=1)
standby_hd_limit=1
# Path for 'smartctl' command (str, default=/usr/sbin/smartctl).
# Required for 'standby guard' feature only
smartctl_path=/usr/sbin/smartctl
# Path for 'hddtemp' command (str, default=/usr/sbin/hddtemp).
# Required for reading of the temperature of SAS/SCSI disks.
hddtemp_path=/usr/sbin/hddtemp```

from smfc.

petersulyok avatar petersulyok commented on June 15, 2024

Hi @MrMeeb, I'm happy to investigate more on this. My assumption was that this motherboard has multiple CPU zones defined in IPMI. Some further questions:

  • How many CPUs are installed on this board?
  • How many fans are installed on this board?
  • I assume you intentionally disabled HD zone in your configuration file, right?

Based on your report my assumption is that the CPU zone will be FAN1 and FAN2 and the HD zone will be FAN7 and FAN8.
What if you run ipmitool with higher zone values like 2, 3, 4?

from smfc.

MrMeeb avatar MrMeeb commented on June 15, 2024

Hi Peter,

2 CPUs installed - it's a dual socket system. There are 4 fans installed in the 2U chassis, attached to (based on the output of impitool sensor fan headers 1, 2, 7 and 8.

Running ipmitool on higher zones has no audible effect. Of course if it's affecting fans that aren't connected I have no way of telling, but the fact that zone 1 affects fans 7 and 8 suggests it split in half as you said.

I disabled HD zone, yeah. Sorry I forgot to mention that. I was having trouble with it not detecting drives, even SATA ones, via drivetemp. I know others in #21 said that that SATA drives on a SAS backplane seemed to work with drivetemp but that doesn't seem to be the case for me. I wanted to just test SMFC quickly, so didn't troubleshoot it. I have now resolved the issue by switching all drives to use hddtemp, even the SATA ones.

Having done that and now enabled HD zone, I can see that you're right - zone 0 for CPU and zone 1 for drives. However in a rack server I'm not sure if this makes total sense - all 4 fans are responsible for cooling all HDDs and both CPUs. I think having all fans react off CPU temp, unless HDD temp passes a certain threshold, could make sense, but even then, in a mixed load of SSDs and HDDs, what's considered a safe operating temperature varies greatly.

As a side note, is it necessary to set hddtemp for every drive added to the list, or is it possible to tell SMFC to use hddtemp for everything? If the numbers in hd_names and hwmon_path don't match, an error is thrown. You mentioned temp_source in #21 but it doesn't seem to work - I guess you chose to not implement that option?

[HD zone]
# Fan controller enabled (bool, default=0)
enabled=1
# Number of HDs (int, default=1)
count=6
# Calculation of HD temperatures (int, [0-minimum, 1-average, 2-maximum], default=1)
temp_calc=1
# Discrete steps in mapping of temperatures to fan level (int, default=4)
steps=4
# Threshold in temperature change before the fan controller reacts (float, C, default=2.0)
sensitivity=2.0
# Polling interval for reading temperature (int, sec, default=10)
polling=10
# Minimum HD temperature (float, C, default=32.0)
min_temp=32.0
# Maximum HD temperature (float, C, default=46.0)
max_temp=46.0
# Minimum HD fan level (int, %, default=35)
min_level=35
# Maximum HD fan level (int, %, default=100)
max_level=100
# Names of the HDs (str multi-line list, default=)
# These names MUST BE specified in '/dev/disk/by-id/...' form!
hd_names=/dev/disk/by-id/ata-Samsung_SSD_860_EVO_500GB_S3Z2NB0K998710F
        /dev/disk/by-id/ata-Samsung_SSD_860_EVO_500GB_S3Z2NB0NA07832R
        /dev/disk/by-id/scsi-35000cca03e42178c
        /dev/disk/by-id/scsi-35000cca03e4efc48
        /dev/disk/by-id/scsi-35000cca03e50c834
        /dev/disk/by-id/scsi-35000cca04608e71c
# Optional parameter, it will be generated automatically based on the disk names.
# List of files in /sys/hwmon file system or 'hddtemp' (str multi-line list, default=)
hwmon_path=hddtemp
        hddtemp
        hddtemp
        hddtemp
        hddtemp
        hddtemp
#            /sys/class/scsi_disk/1:0:0:0/device/hwmon/hwmon*/temp1_input
#            hddtemp
# Standby guard feature for RAID arrays (bool, default=0)
standby_guard_enabled=0
# Number of HDs already in STANDBY state before the full RAID array will be forced to it (int, default=1)
standby_hd_limit=1
# Path for 'smartctl' command (str, default=/usr/sbin/smartctl).
# Required for 'standby guard' feature only
smartctl_path=/usr/sbin/smartctl
# Path for 'hddtemp' command (str, default=/usr/sbin/hddtemp).
# Required for reading of the temperature of SAS/SCSI disks.
hddtemp_path=/usr/sbin/hddtemp

from smfc.

petersulyok avatar petersulyok commented on June 15, 2024

Hi Charlie,

I'm thinking on how I could support this scenario and I've got two ideas in my mind:

  1. You may try to put the four fans into a common zone. For example you may try to put fan7 and fan8 to other connector and in this case all four fans will be working in the same zone.
  2. I'm thinking on the implementation of a new feature where smfc could support PC/Server cases with one cooling chamber where the fans are common but there multiple heat sources (HDs, CPUs). I need more time to figure it out the best way.

BTW, would be interesting to discover the other fan connectors on the motherboard. Would be interesting to understand the mapping between FANS and zones.

from smfc.

MrMeeb avatar MrMeeb commented on June 15, 2024

Hi Peter,

The length of the fan cables internally mean I can connect all fans to zone 1 in headers 5-8. Good idea. I've done that and swapped the zones so CPU is using zone 1, and the server is currently just not reacting to storage temperature at all. I'd say that being able to have multiple heat sources in a common fan zone would be useful in the long run, but this is definitely workable. Also, every other server I've had/built doesn't account for storage temps anyway. It get's a bit complicated with the different operating temperatures of different storage techs, unless you can specify acceptable temp ranges per drive.

I have tested the other fan headers. Fans 1-4 belong to zone 0 and 5-8 belong to zone 1. I also realised I missed FAN9. I believe this is on one of the rear risers in the server, to then be plumbed to an external connector on the rear of the chassis. I don't currently have a fan hanging around to test that one unfortunately, and not looking to cut up cable-ties on chassis fans to see if a cable can reach.

from smfc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.