示例#1
0
double thinkpad_fan::power_usage(struct result_bundle *result, struct parameter_bundle *bundle)
{
	double power;
	double factor;
	double util;


	power = 0;
	util = get_result_value(r_index, result);

	if (util < 0)
		util = 0;


	/* physics dictact that fan power goes cubic with the rpms, but there's also a linear component for friction*/
	factor = get_parameter_value(fancub_index, bundle);
	power += factor * pow(util / 3600.0, 3);

	factor = get_parameter_value(fansqr_index, bundle) - 5.0;
	power += factor * pow(util / 3600.0, 2);

	factor = get_parameter_value(fan_index, bundle) - 10.0;
	power += util / 5000.0 * factor;

	if (power <= 0.0)
		power = 0.0;

	return power;
}
示例#2
0
double	cpudevice::utilization(void)
{
	double _utilization;
	_utilization = get_result_value(r_consumption_index);

	return _utilization * 100;

}
示例#3
0
double cpudevice::power_usage(struct result_bundle *result, struct parameter_bundle *bundle)
{
	double power;
	double factor;
	double _utilization;

	power = 0;
	factor = get_parameter_value(wake_index, bundle);
	_utilization = get_result_value(r_wake_index, result);

	power += _utilization * factor / 10000.0;

	factor = get_parameter_value(consumption_index, bundle);
	_utilization = get_result_value(r_consumption_index, result);

	power += _utilization * factor;

	return power;
}
示例#4
0
int utilization_power_valid(const char *u)
{
	unsigned int i;
	unsigned int index;
	double first_value;

	index = get_result_index(u);
	if (index <= 0)
		return 0;

	first_value = past_results[0]->utilization[index];
	for (i = 1; i < past_results.size(); i++) {
		if (get_result_value(index, past_results[i]) < first_value - 0.0001)
			return 1;
		if (get_result_value(index, past_results[i]) > first_value + 0.0001)
			return 1;	
	}

	return 0;
}
示例#5
0
int utilization_power_valid(int index)
{
	unsigned int i;
	double first_value;

	if (index <= 0)
		return 0;

	if (past_results.size() == 0)
		return 0;

	if (index >= (int)past_results[0]->utilization.size())
		return 0;
	first_value = past_results[0]->utilization[index];
	for (i = 1; i < past_results.size(); i++) {
		if (get_result_value(index, past_results[i]) < first_value - 0.0001)
			return 1;
		if (get_result_value(index, past_results[i]) > first_value + 0.0001)
			return 1;	
	}

	return 0;
}
示例#6
0
double get_result_value(const char *name, struct result_bundle *the_bundle)
{
	return get_result_value(get_result_index(name), the_bundle);
}