performance - What does PCI (not PCI-E) bus speed of 66MHz really mean?
2014-07
According to this article , the bus is the circuit that connects the motherboard . The faster the speed of the bus , the quicker data can be transferred . Bus speed is measured in MHz (Mega Hertz) and a bus speed of 66 MHZ means that that are 66 million cycles per second . Hertz means how the frequency of x every second
For CPU , 66 MHz means 66 million instructions can be processed every second
How about for Bus ?? How much data is terms of btyes is transferred for every cycle ??
It's the speed at which the PCI protocol operates over the bus. It's the CLK
signal in the illustration below.
Wikipedia gives this formula for 32-bit 33MHz PCI, which is x2 for 32-bit 64MHz PCI:
Peak transfer rate of 133 MB/s (133 megabytes per second) for 32-bit bus width (33.33 MHz × 32 bits ÷ 8 bits/byte = 133 MB/s)
There is an address phase and a data phase in the protocol as you can see below, so not all of the 266MBytes/sec will be dedicated to actual work. There is a bit of overhead.
From this:
The basic transfer mechanism is a burst, composed of an address phase and one or more data phases.
Typical read and write transfers are illustrated below:
This article mentions an effective throughput of 90MBytes/sec of the theoretical 133MBytes/sec due to the overhead. For 32-bit 66MHz it would be doubled.
When I'm running on battery even with "performance" frequency scaling governor, something regularly lowers CPU speed to it's lowest value. I don't really want that, my AC strip usually in another room so I don't really need to save power. How can I find what service doing that?
laptop_mode is disabled so that's not it.
Update: Looks like CPU being scaled down only if it is under load. If it is more or less idle, it could stay on any frequency pretty much forever, but once it gets loaded, it quickly jumps to it's lowest frequency.
Another update: Something sets maximum frequency CPU can have.
Try and add the applet "CPU Frequency Scaling Monitor" to your gnome-bar. From there, you might be able to set the frequency manually, instead of relying on a governor.
Is it Intel Centrino based laptop? It could be "SpeedStep" at work! In any case, you can check out EmiFreq-applet to control/set CPU frequency.
http://zzrough.free.fr/emifreq.php
The services relating to power management (including but not limited to CPU throttling) are
APMD - the Advance Power Management daemon
ACPID - the Advanced Configuration and Power Interface daemon
Also, your CPU might be hardware controlled - try finding out if your BIOS has settings for disabling CPU throttling (on a notebook, it might be impossible).
P.S Don't do it - you run the risk of frying your notebook. Install the CPU Frequency Scaling Gnome applet and control it manually.
Afaik, the Gnome applet uses cpufreq-selector. I think this is the command being executed under the hood when you use the applet:
sudo cpufreq-selector --governor=performance --freq=2000
You can run the command directly and see if you see any difference in behaviour.
The cpufrequtils package provides utilities to help you manipulate the CPU scaling behaviour. Install the package and check your CPU options via cpufreq-info.
$ cpufreq-info
cpufrequtils 004: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to [email protected], please.
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which need to switch frequency at the same time: 0
hardware limits: 1000 MHz - 1.67 GHz
available frequency steps: 1.67 GHz, 1.33 GHz, 1000 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 1000 MHz and 1.67 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1000 MHz.
cpufreq stats: 1.67 GHz:0.00%, 1.33 GHz:0.00%, 1000 MHz:0.01% (3526)
analyzing CPU 1:
driver: acpi-cpufreq
CPUs which need to switch frequency at the same time: 1
hardware limits: 1000 MHz - 1.67 GHz
available frequency steps: 1.67 GHz, 1.33 GHz, 1000 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 1000 MHz and 1.67 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1000 MHz.
cpufreq stats: 1.67 GHz:0.00%, 1.33 GHz:0.00%, 1000 MHz:0.01% (3737)
Next, try to set the minimum frequency a governor can use with the cpufreq-set command. This will hopefully stick better than the cpufreq-selector command.
NAME
cpufreq-set - A small tool which allows to modify cpufreq settings.
SYNTAX
cpufreq-set [options]
DESCRIPTION
cpufreq-set allows you to modify cpufreq settings without having to type e.g.
"/sys/devices/system/cpu/cpu0/cpufreq/scaling_set_speed" all the time.
OPTIONS
-c --cpu <CPU>
number of CPU where cpufreq settings shall be modified.
-d --min <FREQ>
new minimum CPU frequency the governor may select.
-u --max <FREQ>
new maximum CPU frequency the governor may select.
-g --governor <GOV>
new cpufreq governor.
-f --freq <FREQ>
specific frequency to be set. Requires userspace governor to be available and
loaded.
Note that I have no idea of the downsides of doing this. You may well be shortening your CPU life dramatically by having it constantly operate at the max frequency.
Turns out there was a setting in a BIOS I set and completely forgot about. It is called "SpeedStep management" or something similar, and it was set to "Optimize Battery" when on battery. Switching it to automatic completely cured the problem.