Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About kakashisensei

  • Rank

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Anyone getting empty folders when they delete torrent and data? I am using Transmission remote gui (not web ui from docker) and every time I delete a torrent including data, if it was in a folder, it leaves an empty folder with the download name plus some random text at the end. Its only when I delete from Transmission remote gui.
  2. I have an egpu setup with my unraid server. Had a spare 980ti that I wanted to use for infrequent rendering task in a VM. But I don't want to leave the gpu running idle all the time as it will probably still suck up 20-30W. I only want to power on the egpu when I am about to run some rendering tasks. I rigged up an egpu setup where it has its own standalone power supply and connects to a pcie slot on the unraid server. However when I power on the egpu, it can't be initialized by unraid until i reboot the server. Just a minor inconvenience. Is there a console command where I can reinitialize specific IOMMU groups or pci devices, so I don't need to reboot. I wouldn't want to reinitialize all devices... Thanks. Any help would be much appreciated.
  3. Sorry I never made this because I ended up switching motherboards where I don't have cpu speed problems. If you are just suffering clock modulation issue, you can follow my posts above to make a startup script. Clock modulation msr key only needs to be set once at startup. However if you are trying to force a cpu speed or some kind of cpu msr that always needs to be written to constantly, sorry I can't help you there. I couldnt figure out how to do that here.
  4. I wasn't testing write speeds when the parity check was running. That was just to show there should be no reading speed problems on the array. I did some more testing. When I write from cache to array, then the disks doing the reading get consistently high speeds. Its only when I move data from one disk to another disk in the array that there is much slower turbo write speeds.
  5. Finally moved data from my old nas over to unraid. While balancing out data across drives, I noticed the turbo write speeds are much slower than when I was testing on different drives. I wonder if there is anything I can check to see whats wrong. While testing with 3 laptop hard drives (1tb parity + 2x 500gb), I was getting around sustained 90-100 MB/s turbo write speeds while moving data around between drives with unbalance plugin. All the other system hardware was the same. This testing was with larger data files. It was writing between hard drives and not to/from cache disk. On my main setup (3tb parity + 3tb + 2x 2tb drives), I see that the turbo write speed is always limited by the read speed of the drive that isn't storing the data being moved. As seen in the screenshot below, the drive holding the data is usually reading at high speeds, but the other drive reading parity bits often drops to low speeds (10-40MB/s). Sometimes the drive not storing the data can read at much higher speeds during a turbo write xfer, but it is only for short durations. This is with large data file transfers. I have reconstruct write on, NCQ on, and turned off dockers/vms and other things that might affect it like folder caching, but that didn't fix the issue. Typically for large folder transfers, the avg transfer speed is ~40MB/s with turbo write. These drives are faster than the laptop hard drives that I tested on. When doing a parity check, they all read at 100+ MB/s consistently.
  6. So its a case by case situation for each docker application. I thought all my docker file paths were getting changed to 755 every time they start. For the transmission docker if I turn off privileged, then it doesn't change all the folders and files back to 755 every time it starts. But without privileged, the webui and remote gui won't work. For the ps3 server docker, it doesn't change the permissions of the files when it starts. But the ps3 writing to the share folder creates data files with root/root and 1001 permissions. Doesn't seem to be any config settings for that application to make it spit out more friendly permission files. Also while that docker is running, Mover cannot move those files. Is there a simple way to run a script when a docker starts?
  7. Unfortunately the two dockers I need external device access to have this issue, and they don't have configurable options for the folder permissions. One is transmission+Openvpn. It does have the transmission option to set umask for the files. I set umask to 0, which allows the files to be 777. But the top lvl folder is still 755. And everytime the docker is started, it will change all the underlying files to 755...
  8. For dockers, I've noticed that my docker folders (any container path folders within docker configuration) have permission set to 755 (nobody/users). I am primarily connecting to the shares via windows SMB, and cannot write to these docker folder paths. I have one configured user which I use to authenticate access to SMB shares. If I chmod 777 those folders, whenever the docker restarts, those docker folders and any contents go back to 755. Is this the correct permission behavior of the dockers? This creates alot of inconvenience to get around this. I would like to be able to read/write to these docker folders through my windows client with ease. Instead I just make a script to chmod 777 those docker folders whenever the array starts. But that is not a robust solution. I've encountered this with a transmission bt and ps3netserv dockers. I am trying to have the ps3 write to the share, but the file ends up blank due to the permission.
  9. I made a script to change the 0x19A register to 0x00 at startup. It was modified from the script here https://forums.gentoo.org/viewtopic-t-914154-start-25.html It has alot more on voltage changing and disabling the cpu frequency scaling driver. Although I think its for the acpi freq driver and not the p state driver. #!/bin/bash setclockmod() { for i in $cpulist; do wrmsr -p$i 0x19A 0x00 done } loadchecks() { [[ $(id -u) = "0" ]] || { echo "Not running as root, aborting!"; exit 1; } modprobe msr test -c /dev/cpu/0/msr || { echo "msr module not loaded, aborting!"; exit 1; } which wrmsr &>/dev/null || { echo "Could not find wrmsr, aborting!"; exit 1; } which rdmsr &>/dev/null || { echo "Could not find rdmsr, aborting!"; exit 1; } cpulist=$(grep processor /proc/cpuinfo | awk '{print $3}') } loadchecks setclockmod exit However, I had issues where the script, rdmsr, and wrmsr files kept getting deleted from unraid boot drive after each bootup. I had the script in /usr/local/bin and the driver files are in /usr/sbin. Does anyone know how to stop that? Instead I worked around by placing the script and driver files in a user share, and used the User Scripts plugin to copy those files to the appropriate locations, chmod +x , and run the main script at the startup of the array.
  10. Since it was an easy fix, I won't try to make a plugin for cpu throttle and frequency control. But I will share all my findings for anyone willing to try. - The necessary utility is MSR Tools, as that allows to read and write to CPU MSR. Since there is no installer package on unraid, I copied the driver files over from the pkg install on ubuntu. Those are "rdmsr" and "wrmsr" in /usr/sbin. These can only be used by root. You also need to do modprobe msr to generate msr files for your cpu. These will make msr files for each of your cpu cores located at /dev/cpu/X/msr where X is a folder for each cpu core number. - Once you have that working, you can use rdmsr and wrmsr commands to the CPU MSR. Rdmsr is for reading, Wrmsr is for writing. All CPU MSR registers contain 2 8-bit data strings. But with MSR Tools, only 0x198 returns the full two strings when using the read function. The important registers are: 0x198 Returns current cpu speed multipler. It appears as 2 8-bit strings concatenated. The important data is the hex value of the multiplier at the end of the 2nd string. This is read only. Example: rdmsr -pN 0x198 (where N is the cpu core number) returns something like 0000292700002800 (where the 28 is hex value of the multiplier, in this case 40x in decimal) 0x199 MSR for the requested cpu speed multiplier. This is the important register to force the cpu to change to the requested speed. Example: wrmsr -p0 0x199 0xAA (writing to cpu core 0, where AA is the hex value for the decimal ratio you want to force) 0x19A This is the MSR for clock modulation being on or off. This was the one causing issues for me. At bootup, the value is 0x1A. I had to write 0x00 to turn it off and that fixed the whole issue for me. Example: wrmsr -p0 0x19A 0x00 0x1AD This is the MSR for the max turbo ratio. Not sure if it is changeable, it was always the same for me. Might only be changeable for Extreme intel cpus. The hex value for the multiplier ratio was at the beginning of the second 8-bit string for me. 0x194 This is for voltage control. I do not know much about this as I didn't want to mess with it. There are resources if you look up Throttlestop discussions about it. Take a look at the link in the next post for the original script with voltage control. 0x1AC This is voltage for turbo I think. Don't know much either. I tested writing 0x199 with a fixed ratio in a while loop, but that didnt seem to work. My guess is that it is fighting with the p state driver. You may need to disable that and have no frequency scaling driver enabled. Also that while loop created a constant 15-30% cpu utilization. In the link below, the original script had writing 0x19A to 0x00 in a infinite loop, but I didn't need to do that for my setup. There should be a register with C0%. Not sure which one. This is the C0 state utilization. If the % is low, the cpu is barely being utilized. This could be used as a user defined threshold for forcing low power frequency state to reduce heat and energy consumption. This is how Throttlestop does its power save feature.
  11. Update I resolved the issue on an ubuntu test platform and migrating that over to unraid. It was a real easy fix as I only need to write to one cpu register (0x19A) to turn off clock control modulation. I do not need to keep writing to the register for requested cpu multiplier (0x199). Apparently the intel pstate driver for linux works correctly with my cpu, it just needed clock control modulation off. This is unlike windows, where it needs to keep writing to that register. Now I am getting max turbo boost speeds. This is the cpu speed readout with a VM running cpu benches.
  12. I have a very uncommon issue, but it may pertain to others here. I am running unraid on an old sandybridge i7 laptop, using an engineering sample cpu. Because of the ES cpu, the laptop bios doesn't pass over the correct turbo boost ratios to OS. The cpu will not go past 2ghz under full utilization (its base frequency is 2.4ghz and turbo up to 3.5ghz). In unraid, cpu will not go past 2ghz and that carries over to all virtual environments. I have looked at Tips and Tweaks to control governance of p_state driver and turbo speed on/off, but that doesn't resolve the issue.This severely limits performance I need for plex transcoding and a windows VM I use for tv streaming. In bare metal windows, I can use throttlestop to correct this. Having looked into how throttlestop works, I see that it is simply writing to the CPU MSR (model specific register) to a specific register for requested speed with the hex value for cpu speed multiplier (in my case 0x23 for 35x). This causes the cpu to behave properly and turbo boost correctly, and it still drops down to idle states as well. Throttlestop does not have a linux version, and the creator won't make one or release the source. But he has explained what throttlestop is doing with CPU MSR to do the things the application does. I want to try my hand at creating a unraid plugin with similar basic throttlestop functionality. First would just be to control cpu speed by setting the requested cpu multiplier ratio. There is a utility that can read / write to CPU MSR in linux called msr tools (https://01.org/msr-tools). This plugin would basically need to keep spam writing to the CPU MSR. It is not simply write once at boot and forget. Another potentially useful function would be user controlled idle at % utilization. There should be a MSR for cpu utilization % (C0 state) and can change the requested speed based off that, forcing low power 800mhz state during low utilization. Unfortunately, I am a noob with linux and have very limited scripting experience. But I want to try my hand at this and see how far I can get. I was hoping to use an existing plugin as a basis to learn. Something like a plugin that uses third party utilities that constantly monitors and write to memory register or change variable setting. One that I am looking at now is Tips and Tweaks, but unsure if it is constantly writing. I am not even sure exactly how to get MSR tools working in unraid yet. Since apt-get install packages doesnt work in slackware, I assume I would need to make a slackware pkg from the source. Can anyone help me get pointed in the right direction? Much appreciated!