Merge branches 'pm-opp', 'pm-qos', 'acpi-pm', 'pm-domains' and 'pm-tools'
* pm-opp: PM / OPP: Correct Documentation about library location opp: of: Support multiple suspend OPPs defined in DT dt-bindings: opp: Support multiple opp-suspend properties opp: core: add regulators enable and disable opp: Don't decrement uninitialized list_kref * pm-qos: PM: QoS: Get rid of unused flags * acpi-pm: ACPI: PM: Print debug messages on device power state changes * pm-domains: PM / Domains: Verify PM domain type in dev_pm_genpd_set_performance_state() PM / Domains: Simplify genpd_lookup_dev() PM / Domains: Align in-parameter names for some genpd functions * pm-tools: pm-graph: make setVal unbuffered again for python2 and python3 cpupower: update German translation tools/power/cpupower: fix 64bit detection when cross-compiling cpupower: Add missing newline at end of file pm-graph v5.5
This commit is contained in:
Коммит
fc6763a2d7
|
@ -140,8 +140,8 @@ Optional properties:
|
|||
frequency for a short duration of time limited by the device's power, current
|
||||
and thermal limits.
|
||||
|
||||
- opp-suspend: Marks the OPP to be used during device suspend. Only one OPP in
|
||||
the table should have this.
|
||||
- opp-suspend: Marks the OPP to be used during device suspend. If multiple OPPs
|
||||
in the table have this, the OPP with highest opp-hz will be used.
|
||||
|
||||
- opp-supported-hw: This enables us to select only a subset of OPPs from the
|
||||
larger OPP table, based on what version of the hardware we are running on. We
|
||||
|
|
|
@ -46,7 +46,7 @@ We can represent these as three OPPs as the following {Hz, uV} tuples:
|
|||
----------------------------------------
|
||||
|
||||
OPP library provides a set of helper functions to organize and query the OPP
|
||||
information. The library is located in drivers/base/power/opp.c and the header
|
||||
information. The library is located in drivers/opp/ directory and the header
|
||||
is located in include/linux/pm_opp.h. OPP library can be enabled by enabling
|
||||
CONFIG_PM_OPP from power management menuconfig menu. OPP library depends on
|
||||
CONFIG_PM as certain SoCs such as Texas Instrument's OMAP framework allows to
|
||||
|
|
|
@ -7,8 +7,7 @@ performance expectations by drivers, subsystems and user space applications on
|
|||
one of the parameters.
|
||||
|
||||
Two different PM QoS frameworks are available:
|
||||
1. PM QoS classes for cpu_dma_latency, network_latency, network_throughput,
|
||||
memory_bandwidth.
|
||||
1. PM QoS classes for cpu_dma_latency
|
||||
2. the per-device PM QoS framework provides the API to manage the per-device latency
|
||||
constraints and PM QoS flags.
|
||||
|
||||
|
@ -79,7 +78,7 @@ cleanup of a process, the interface requires the process to register its
|
|||
parameter requests in the following way:
|
||||
|
||||
To register the default pm_qos target for the specific parameter, the process
|
||||
must open one of /dev/[cpu_dma_latency, network_latency, network_throughput]
|
||||
must open /dev/cpu_dma_latency
|
||||
|
||||
As long as the device node is held open that process has a registered
|
||||
request on the parameter.
|
||||
|
|
|
@ -166,6 +166,10 @@ int acpi_device_set_power(struct acpi_device *device, int state)
|
|||
|| (state < ACPI_STATE_D0) || (state > ACPI_STATE_D3_COLD))
|
||||
return -EINVAL;
|
||||
|
||||
acpi_handle_debug(device->handle, "Power state change: %s -> %s\n",
|
||||
acpi_power_state_string(device->power.state),
|
||||
acpi_power_state_string(state));
|
||||
|
||||
/* Make sure this is a valid target state */
|
||||
|
||||
/* There is a special case for D0 addressed below. */
|
||||
|
|
|
@ -149,29 +149,24 @@ static inline bool irq_safe_dev_in_no_sleep_domain(struct device *dev,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int genpd_runtime_suspend(struct device *dev);
|
||||
|
||||
/*
|
||||
* Get the generic PM domain for a particular struct device.
|
||||
* This validates the struct device pointer, the PM domain pointer,
|
||||
* and checks that the PM domain pointer is a real generic PM domain.
|
||||
* Any failure results in NULL being returned.
|
||||
*/
|
||||
static struct generic_pm_domain *genpd_lookup_dev(struct device *dev)
|
||||
static struct generic_pm_domain *dev_to_genpd_safe(struct device *dev)
|
||||
{
|
||||
struct generic_pm_domain *genpd = NULL, *gpd;
|
||||
|
||||
if (IS_ERR_OR_NULL(dev) || IS_ERR_OR_NULL(dev->pm_domain))
|
||||
return NULL;
|
||||
|
||||
mutex_lock(&gpd_list_lock);
|
||||
list_for_each_entry(gpd, &gpd_list, gpd_list_node) {
|
||||
if (&gpd->domain == dev->pm_domain) {
|
||||
genpd = gpd;
|
||||
break;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&gpd_list_lock);
|
||||
/* A genpd's always have its ->runtime_suspend() callback assigned. */
|
||||
if (dev->pm_domain->ops.runtime_suspend == genpd_runtime_suspend)
|
||||
return pd_to_genpd(dev->pm_domain);
|
||||
|
||||
return genpd;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -385,8 +380,8 @@ int dev_pm_genpd_set_performance_state(struct device *dev, unsigned int state)
|
|||
unsigned int prev;
|
||||
int ret;
|
||||
|
||||
genpd = dev_to_genpd(dev);
|
||||
if (IS_ERR(genpd))
|
||||
genpd = dev_to_genpd_safe(dev);
|
||||
if (!genpd)
|
||||
return -ENODEV;
|
||||
|
||||
if (unlikely(!genpd->set_performance_state))
|
||||
|
@ -1610,7 +1605,7 @@ static int genpd_remove_device(struct generic_pm_domain *genpd,
|
|||
*/
|
||||
int pm_genpd_remove_device(struct device *dev)
|
||||
{
|
||||
struct generic_pm_domain *genpd = genpd_lookup_dev(dev);
|
||||
struct generic_pm_domain *genpd = dev_to_genpd_safe(dev);
|
||||
|
||||
if (!genpd)
|
||||
return -EINVAL;
|
||||
|
|
|
@ -988,6 +988,7 @@ static struct opp_table *_allocate_opp_table(struct device *dev, int index)
|
|||
BLOCKING_INIT_NOTIFIER_HEAD(&opp_table->head);
|
||||
INIT_LIST_HEAD(&opp_table->opp_list);
|
||||
kref_init(&opp_table->kref);
|
||||
kref_init(&opp_table->list_kref);
|
||||
|
||||
/* Secure the device table modification */
|
||||
list_add(&opp_table->node, &opp_tables);
|
||||
|
@ -1625,6 +1626,12 @@ struct opp_table *dev_pm_opp_set_regulators(struct device *dev,
|
|||
goto free_regulators;
|
||||
}
|
||||
|
||||
ret = regulator_enable(reg);
|
||||
if (ret < 0) {
|
||||
regulator_put(reg);
|
||||
goto free_regulators;
|
||||
}
|
||||
|
||||
opp_table->regulators[i] = reg;
|
||||
}
|
||||
|
||||
|
@ -1638,8 +1645,10 @@ struct opp_table *dev_pm_opp_set_regulators(struct device *dev,
|
|||
return opp_table;
|
||||
|
||||
free_regulators:
|
||||
while (i != 0)
|
||||
regulator_put(opp_table->regulators[--i]);
|
||||
while (i--) {
|
||||
regulator_disable(opp_table->regulators[i]);
|
||||
regulator_put(opp_table->regulators[i]);
|
||||
}
|
||||
|
||||
kfree(opp_table->regulators);
|
||||
opp_table->regulators = NULL;
|
||||
|
@ -1665,8 +1674,10 @@ void dev_pm_opp_put_regulators(struct opp_table *opp_table)
|
|||
/* Make sure there are no concurrent readers while updating opp_table */
|
||||
WARN_ON(!list_empty(&opp_table->opp_list));
|
||||
|
||||
for (i = opp_table->regulator_count - 1; i >= 0; i--)
|
||||
for (i = opp_table->regulator_count - 1; i >= 0; i--) {
|
||||
regulator_disable(opp_table->regulators[i]);
|
||||
regulator_put(opp_table->regulators[i]);
|
||||
}
|
||||
|
||||
_free_set_opp_data(opp_table);
|
||||
|
||||
|
|
|
@ -617,9 +617,12 @@ static struct dev_pm_opp *_opp_add_static_v2(struct opp_table *opp_table,
|
|||
/* OPP to select on device suspend */
|
||||
if (of_property_read_bool(np, "opp-suspend")) {
|
||||
if (opp_table->suspend_opp) {
|
||||
dev_warn(dev, "%s: Multiple suspend OPPs found (%lu %lu)\n",
|
||||
__func__, opp_table->suspend_opp->rate,
|
||||
new_opp->rate);
|
||||
/* Pick the OPP with higher rate as suspend OPP */
|
||||
if (new_opp->rate > opp_table->suspend_opp->rate) {
|
||||
opp_table->suspend_opp->suspend = false;
|
||||
new_opp->suspend = true;
|
||||
opp_table->suspend_opp = new_opp;
|
||||
}
|
||||
} else {
|
||||
new_opp->suspend = true;
|
||||
opp_table->suspend_opp = new_opp;
|
||||
|
@ -662,8 +665,6 @@ static int _of_add_opp_table_v2(struct device *dev, struct opp_table *opp_table)
|
|||
return 0;
|
||||
}
|
||||
|
||||
kref_init(&opp_table->list_kref);
|
||||
|
||||
/* We have opp-table node now, iterate over it and add OPPs */
|
||||
for_each_available_child_of_node(opp_table->np, np) {
|
||||
opp = _opp_add_static_v2(opp_table, dev, np);
|
||||
|
@ -672,17 +673,15 @@ static int _of_add_opp_table_v2(struct device *dev, struct opp_table *opp_table)
|
|||
dev_err(dev, "%s: Failed to add OPP, %d\n", __func__,
|
||||
ret);
|
||||
of_node_put(np);
|
||||
goto put_list_kref;
|
||||
return ret;
|
||||
} else if (opp) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
/* There should be one of more OPP defined */
|
||||
if (WARN_ON(!count)) {
|
||||
ret = -ENOENT;
|
||||
goto put_list_kref;
|
||||
}
|
||||
if (WARN_ON(!count))
|
||||
return -ENOENT;
|
||||
|
||||
list_for_each_entry(opp, &opp_table->opp_list, node)
|
||||
pstate_count += !!opp->pstate;
|
||||
|
@ -691,8 +690,7 @@ static int _of_add_opp_table_v2(struct device *dev, struct opp_table *opp_table)
|
|||
if (pstate_count && pstate_count != count) {
|
||||
dev_err(dev, "Not all nodes have performance state set (%d: %d)\n",
|
||||
count, pstate_count);
|
||||
ret = -ENOENT;
|
||||
goto put_list_kref;
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
if (pstate_count)
|
||||
|
@ -701,11 +699,6 @@ static int _of_add_opp_table_v2(struct device *dev, struct opp_table *opp_table)
|
|||
opp_table->parsed_static_opps = true;
|
||||
|
||||
return 0;
|
||||
|
||||
put_list_kref:
|
||||
_put_opp_list_kref(opp_table);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Initializes OPP tables based on old-deprecated bindings */
|
||||
|
@ -731,8 +724,6 @@ static int _of_add_opp_table_v1(struct device *dev, struct opp_table *opp_table)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
kref_init(&opp_table->list_kref);
|
||||
|
||||
val = prop->value;
|
||||
while (nr) {
|
||||
unsigned long freq = be32_to_cpup(val++) * 1000;
|
||||
|
@ -742,7 +733,6 @@ static int _of_add_opp_table_v1(struct device *dev, struct opp_table *opp_table)
|
|||
if (ret) {
|
||||
dev_err(dev, "%s: Failed to add OPP %ld (%d)\n",
|
||||
__func__, freq, ret);
|
||||
_put_opp_list_kref(opp_table);
|
||||
return ret;
|
||||
}
|
||||
nr -= 2;
|
||||
|
|
|
@ -197,9 +197,9 @@ static inline struct generic_pm_domain_data *dev_gpd_data(struct device *dev)
|
|||
int pm_genpd_add_device(struct generic_pm_domain *genpd, struct device *dev);
|
||||
int pm_genpd_remove_device(struct device *dev);
|
||||
int pm_genpd_add_subdomain(struct generic_pm_domain *genpd,
|
||||
struct generic_pm_domain *new_subdomain);
|
||||
struct generic_pm_domain *subdomain);
|
||||
int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd,
|
||||
struct generic_pm_domain *target);
|
||||
struct generic_pm_domain *subdomain);
|
||||
int pm_genpd_init(struct generic_pm_domain *genpd,
|
||||
struct dev_power_governor *gov, bool is_off);
|
||||
int pm_genpd_remove(struct generic_pm_domain *genpd);
|
||||
|
@ -226,12 +226,12 @@ static inline int pm_genpd_remove_device(struct device *dev)
|
|||
return -ENOSYS;
|
||||
}
|
||||
static inline int pm_genpd_add_subdomain(struct generic_pm_domain *genpd,
|
||||
struct generic_pm_domain *new_sd)
|
||||
struct generic_pm_domain *subdomain)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
static inline int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd,
|
||||
struct generic_pm_domain *target)
|
||||
struct generic_pm_domain *subdomain)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
@ -282,8 +282,8 @@ int of_genpd_add_provider_onecell(struct device_node *np,
|
|||
struct genpd_onecell_data *data);
|
||||
void of_genpd_del_provider(struct device_node *np);
|
||||
int of_genpd_add_device(struct of_phandle_args *args, struct device *dev);
|
||||
int of_genpd_add_subdomain(struct of_phandle_args *parent,
|
||||
struct of_phandle_args *new_subdomain);
|
||||
int of_genpd_add_subdomain(struct of_phandle_args *parent_spec,
|
||||
struct of_phandle_args *subdomain_spec);
|
||||
struct generic_pm_domain *of_genpd_remove_last(struct device_node *np);
|
||||
int of_genpd_parse_idle_states(struct device_node *dn,
|
||||
struct genpd_power_state **states, int *n);
|
||||
|
@ -316,8 +316,8 @@ static inline int of_genpd_add_device(struct of_phandle_args *args,
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int of_genpd_add_subdomain(struct of_phandle_args *parent,
|
||||
struct of_phandle_args *new_subdomain)
|
||||
static inline int of_genpd_add_subdomain(struct of_phandle_args *parent_spec,
|
||||
struct of_phandle_args *subdomain_spec)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
|
|
@ -13,9 +13,6 @@
|
|||
enum {
|
||||
PM_QOS_RESERVED = 0,
|
||||
PM_QOS_CPU_DMA_LATENCY,
|
||||
PM_QOS_NETWORK_LATENCY,
|
||||
PM_QOS_NETWORK_THROUGHPUT,
|
||||
PM_QOS_MEMORY_BANDWIDTH,
|
||||
|
||||
/* insert new class ID */
|
||||
PM_QOS_NUM_CLASSES,
|
||||
|
@ -33,9 +30,6 @@ enum pm_qos_flags_status {
|
|||
#define PM_QOS_LATENCY_ANY_NS ((s64)PM_QOS_LATENCY_ANY * NSEC_PER_USEC)
|
||||
|
||||
#define PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE (2000 * USEC_PER_SEC)
|
||||
#define PM_QOS_NETWORK_LAT_DEFAULT_VALUE (2000 * USEC_PER_SEC)
|
||||
#define PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE 0
|
||||
#define PM_QOS_MEMORY_BANDWIDTH_DEFAULT_VALUE 0
|
||||
#define PM_QOS_RESUME_LATENCY_DEFAULT_VALUE PM_QOS_LATENCY_ANY
|
||||
#define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT PM_QOS_LATENCY_ANY
|
||||
#define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT_NS PM_QOS_LATENCY_ANY_NS
|
||||
|
|
|
@ -379,9 +379,7 @@ DECLARE_EVENT_CLASS(pm_qos_request,
|
|||
|
||||
TP_printk("pm_qos_class=%s value=%d",
|
||||
__print_symbolic(__entry->pm_qos_class,
|
||||
{ PM_QOS_CPU_DMA_LATENCY, "CPU_DMA_LATENCY" },
|
||||
{ PM_QOS_NETWORK_LATENCY, "NETWORK_LATENCY" },
|
||||
{ PM_QOS_NETWORK_THROUGHPUT, "NETWORK_THROUGHPUT" }),
|
||||
{ PM_QOS_CPU_DMA_LATENCY, "CPU_DMA_LATENCY" }),
|
||||
__entry->value)
|
||||
);
|
||||
|
||||
|
@ -426,9 +424,7 @@ TRACE_EVENT(pm_qos_update_request_timeout,
|
|||
|
||||
TP_printk("pm_qos_class=%s value=%d, timeout_us=%ld",
|
||||
__print_symbolic(__entry->pm_qos_class,
|
||||
{ PM_QOS_CPU_DMA_LATENCY, "CPU_DMA_LATENCY" },
|
||||
{ PM_QOS_NETWORK_LATENCY, "NETWORK_LATENCY" },
|
||||
{ PM_QOS_NETWORK_THROUGHPUT, "NETWORK_THROUGHPUT" }),
|
||||
{ PM_QOS_CPU_DMA_LATENCY, "CPU_DMA_LATENCY" }),
|
||||
__entry->value, __entry->timeout_us)
|
||||
);
|
||||
|
||||
|
|
|
@ -78,57 +78,9 @@ static struct pm_qos_object cpu_dma_pm_qos = {
|
|||
.name = "cpu_dma_latency",
|
||||
};
|
||||
|
||||
static BLOCKING_NOTIFIER_HEAD(network_lat_notifier);
|
||||
static struct pm_qos_constraints network_lat_constraints = {
|
||||
.list = PLIST_HEAD_INIT(network_lat_constraints.list),
|
||||
.target_value = PM_QOS_NETWORK_LAT_DEFAULT_VALUE,
|
||||
.default_value = PM_QOS_NETWORK_LAT_DEFAULT_VALUE,
|
||||
.no_constraint_value = PM_QOS_NETWORK_LAT_DEFAULT_VALUE,
|
||||
.type = PM_QOS_MIN,
|
||||
.notifiers = &network_lat_notifier,
|
||||
};
|
||||
static struct pm_qos_object network_lat_pm_qos = {
|
||||
.constraints = &network_lat_constraints,
|
||||
.name = "network_latency",
|
||||
};
|
||||
|
||||
|
||||
static BLOCKING_NOTIFIER_HEAD(network_throughput_notifier);
|
||||
static struct pm_qos_constraints network_tput_constraints = {
|
||||
.list = PLIST_HEAD_INIT(network_tput_constraints.list),
|
||||
.target_value = PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE,
|
||||
.default_value = PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE,
|
||||
.no_constraint_value = PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE,
|
||||
.type = PM_QOS_MAX,
|
||||
.notifiers = &network_throughput_notifier,
|
||||
};
|
||||
static struct pm_qos_object network_throughput_pm_qos = {
|
||||
.constraints = &network_tput_constraints,
|
||||
.name = "network_throughput",
|
||||
};
|
||||
|
||||
|
||||
static BLOCKING_NOTIFIER_HEAD(memory_bandwidth_notifier);
|
||||
static struct pm_qos_constraints memory_bw_constraints = {
|
||||
.list = PLIST_HEAD_INIT(memory_bw_constraints.list),
|
||||
.target_value = PM_QOS_MEMORY_BANDWIDTH_DEFAULT_VALUE,
|
||||
.default_value = PM_QOS_MEMORY_BANDWIDTH_DEFAULT_VALUE,
|
||||
.no_constraint_value = PM_QOS_MEMORY_BANDWIDTH_DEFAULT_VALUE,
|
||||
.type = PM_QOS_SUM,
|
||||
.notifiers = &memory_bandwidth_notifier,
|
||||
};
|
||||
static struct pm_qos_object memory_bandwidth_pm_qos = {
|
||||
.constraints = &memory_bw_constraints,
|
||||
.name = "memory_bandwidth",
|
||||
};
|
||||
|
||||
|
||||
static struct pm_qos_object *pm_qos_array[] = {
|
||||
&null_pm_qos,
|
||||
&cpu_dma_pm_qos,
|
||||
&network_lat_pm_qos,
|
||||
&network_throughput_pm_qos,
|
||||
&memory_bandwidth_pm_qos,
|
||||
};
|
||||
|
||||
static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf,
|
||||
|
|
|
@ -18,7 +18,6 @@ OUTDIR := $(shell cd $(OUTPUT) && pwd)
|
|||
$(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist))
|
||||
endif
|
||||
|
||||
include ../../scripts/Makefile.arch
|
||||
|
||||
# --- CONFIGURATION BEGIN ---
|
||||
|
||||
|
@ -69,11 +68,6 @@ bindir ?= /usr/bin
|
|||
sbindir ?= /usr/sbin
|
||||
mandir ?= /usr/man
|
||||
includedir ?= /usr/include
|
||||
ifeq ($(IS_64_BIT), 1)
|
||||
libdir ?= /usr/lib64
|
||||
else
|
||||
libdir ?= /usr/lib
|
||||
endif
|
||||
localedir ?= /usr/share/locale
|
||||
docdir ?= /usr/share/doc/packages/cpupower
|
||||
confdir ?= /etc/
|
||||
|
@ -100,6 +94,14 @@ RANLIB = $(CROSS)ranlib
|
|||
HOSTCC = gcc
|
||||
MKDIR = mkdir
|
||||
|
||||
# 64bit library detection
|
||||
include ../../scripts/Makefile.arch
|
||||
|
||||
ifeq ($(IS_64_BIT), 1)
|
||||
libdir ?= /usr/lib64
|
||||
else
|
||||
libdir ?= /usr/lib
|
||||
endif
|
||||
|
||||
# Now we set up the build system
|
||||
#
|
||||
|
|
|
@ -88,4 +88,4 @@ done
|
|||
echo >> $dir/plot_script.gpl
|
||||
|
||||
gnuplot $dir/plot_script.gpl
|
||||
rm -r $dir
|
||||
rm -r $dir
|
||||
|
|
|
@ -85,4 +85,4 @@ function create_plots()
|
|||
}
|
||||
|
||||
measure
|
||||
create_plots
|
||||
create_plots
|
||||
|
|
|
@ -8,66 +8,66 @@ msgstr ""
|
|||
"Project-Id-Version: cpufrequtils 006\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-08 17:03+0100\n"
|
||||
"PO-Revision-Date: 2009-08-08 17:18+0100\n"
|
||||
"Last-Translator: <linux@dominikbrodowski.net>\n"
|
||||
"PO-Revision-Date: 2019-06-02 15:23+0200\n"
|
||||
"Last-Translator: Benjamin Weis <benjamin.weis@gmx.com>\n"
|
||||
"Language-Team: NONE\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: utils/idle_monitor/nhm_idle.c:36
|
||||
msgid "Processor Core C3"
|
||||
msgstr ""
|
||||
msgstr "Prozessorkern C3"
|
||||
|
||||
#: utils/idle_monitor/nhm_idle.c:43
|
||||
msgid "Processor Core C6"
|
||||
msgstr ""
|
||||
msgstr "Prozessorkern C6"
|
||||
|
||||
#: utils/idle_monitor/nhm_idle.c:51
|
||||
msgid "Processor Package C3"
|
||||
msgstr ""
|
||||
msgstr "Prozessorpaket C3"
|
||||
|
||||
#: utils/idle_monitor/nhm_idle.c:58 utils/idle_monitor/amd_fam14h_idle.c:70
|
||||
msgid "Processor Package C6"
|
||||
msgstr ""
|
||||
msgstr "Prozessorpaket C6"
|
||||
|
||||
#: utils/idle_monitor/snb_idle.c:33
|
||||
msgid "Processor Core C7"
|
||||
msgstr ""
|
||||
msgstr "Prozessorkern C7"
|
||||
|
||||
#: utils/idle_monitor/snb_idle.c:40
|
||||
msgid "Processor Package C2"
|
||||
msgstr ""
|
||||
msgstr "Prozessorpaket C2"
|
||||
|
||||
#: utils/idle_monitor/snb_idle.c:47
|
||||
msgid "Processor Package C7"
|
||||
msgstr ""
|
||||
msgstr "Prozessorpaket C7"
|
||||
|
||||
#: utils/idle_monitor/amd_fam14h_idle.c:56
|
||||
msgid "Package in sleep state (PC1 or deeper)"
|
||||
msgstr ""
|
||||
msgstr "Paket in Schlafzustand (PC1 oder tiefer)"
|
||||
|
||||
#: utils/idle_monitor/amd_fam14h_idle.c:63
|
||||
msgid "Processor Package C1"
|
||||
msgstr ""
|
||||
msgstr "Prozessorpaket C1"
|
||||
|
||||
#: utils/idle_monitor/amd_fam14h_idle.c:77
|
||||
msgid "North Bridge P1 boolean counter (returns 0 or 1)"
|
||||
msgstr ""
|
||||
msgstr "North Bridge P1 boolescher Zähler (gibt 0 oder 1 zurück)"
|
||||
|
||||
#: utils/idle_monitor/mperf_monitor.c:35
|
||||
msgid "Processor Core not idle"
|
||||
msgstr ""
|
||||
msgstr "Prozessorkern ist nicht im Leerlauf"
|
||||
|
||||
#: utils/idle_monitor/mperf_monitor.c:42
|
||||
msgid "Processor Core in an idle state"
|
||||
msgstr ""
|
||||
msgstr "Prozessorkern ist in einem Ruhezustand"
|
||||
|
||||
#: utils/idle_monitor/mperf_monitor.c:50
|
||||
msgid "Average Frequency (including boost) in MHz"
|
||||
msgstr ""
|
||||
msgstr "Durchschnittliche Frequenz (einschließlich Boost) in MHz"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:66
|
||||
#, c-format
|
||||
|
@ -75,6 +75,8 @@ msgid ""
|
|||
"cpupower monitor: [-h] [ [-t] | [-l] | [-m <mon1>,[<mon2>] ] ] [-i "
|
||||
"interval_sec | -c command ...]\n"
|
||||
msgstr ""
|
||||
"cpupower monitor: [-h] [ [-t] | [-l] | [-m <mon1>,[<mon2>] ] ] [-i "
|
||||
"interval_sec | -c Befehl ...]\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:69
|
||||
#, c-format
|
||||
|
@ -82,36 +84,40 @@ msgid ""
|
|||
"cpupower monitor: [-v] [-h] [ [-t] | [-l] | [-m <mon1>,[<mon2>] ] ] [-i "
|
||||
"interval_sec | -c command ...]\n"
|
||||
msgstr ""
|
||||
"cpupower monitor: [-v] [-h] [ [-t] | [-l] | [-m <mon1>,[<mon2>] ] ] [-i "
|
||||
"interval_sec | -c Befehl ...]\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:71
|
||||
#, c-format
|
||||
msgid "\t -v: be more verbose\n"
|
||||
msgstr ""
|
||||
msgstr "\t -v: ausführlicher\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:73
|
||||
#, c-format
|
||||
msgid "\t -h: print this help\n"
|
||||
msgstr ""
|
||||
msgstr "\t -h: diese Hilfe ausgeben\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:74
|
||||
#, c-format
|
||||
msgid "\t -i: time interval to measure for in seconds (default 1)\n"
|
||||
msgstr ""
|
||||
msgstr "\t -i: Zeitintervall für die Messung in Sekunden (Standard 1)\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:75
|
||||
#, c-format
|
||||
msgid "\t -t: show CPU topology/hierarchy\n"
|
||||
msgstr ""
|
||||
msgstr "\t -t: CPU-Topologie/Hierarchie anzeigen\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:76
|
||||
#, c-format
|
||||
msgid "\t -l: list available CPU sleep monitors (for use with -m)\n"
|
||||
msgstr ""
|
||||
"\t -l: verfügbare CPU-Schlafwächter auflisten (für Verwendung mit -m)\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:77
|
||||
#, c-format
|
||||
msgid "\t -m: show specific CPU sleep monitors only (in same order)\n"
|
||||
msgstr ""
|
||||
"\t -m: spezifische CPU-Schlafwächter anzeigen (in gleicher Reihenfolge)\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:79
|
||||
#, c-format
|
||||
|
@ -119,71 +125,73 @@ msgid ""
|
|||
"only one of: -t, -l, -m are allowed\n"
|
||||
"If none of them is passed,"
|
||||
msgstr ""
|
||||
"nur einer von: -t, -l, -m ist erlaubt\n"
|
||||
"Wenn keiner von ihnen übergeben wird,"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:80
|
||||
#, c-format
|
||||
msgid " all supported monitors are shown\n"
|
||||
msgstr ""
|
||||
msgstr " werden alle unterstützten Wächter angezeigt\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:197
|
||||
#, c-format
|
||||
msgid "Monitor %s, Counter %s has no count function. Implementation error\n"
|
||||
msgstr ""
|
||||
msgstr "Wächter %s, Zähler %s hat keine Zählfunktion. Implementierungsfehler\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:207
|
||||
#, c-format
|
||||
msgid " *is offline\n"
|
||||
msgstr ""
|
||||
msgstr " *ist offline\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:236
|
||||
#, c-format
|
||||
msgid "%s: max monitor name length (%d) exceeded\n"
|
||||
msgstr ""
|
||||
msgstr "%s: max. Wächternamenslänge (%d) überschritten\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:250
|
||||
#, c-format
|
||||
msgid "No matching monitor found in %s, try -l option\n"
|
||||
msgstr ""
|
||||
msgstr "Kein passender Wächter in %s gefunden, versuchen Sie die Option -l\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:266
|
||||
#, c-format
|
||||
msgid "Monitor \"%s\" (%d states) - Might overflow after %u s\n"
|
||||
msgstr ""
|
||||
msgstr "Wächter \"%s\" (%d Zustände) - Könnte nach %u s überlaufen\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:319
|
||||
#, c-format
|
||||
msgid "%s took %.5f seconds and exited with status %d\n"
|
||||
msgstr ""
|
||||
msgstr "%s hat %.5f Sekunden gedauert und hat sich mit Status %d beendet\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:406
|
||||
#, c-format
|
||||
msgid "Cannot read number of available processors\n"
|
||||
msgstr ""
|
||||
msgstr "Anzahl der verfügbaren Prozessoren kann nicht gelesen werden\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:417
|
||||
#, c-format
|
||||
msgid "Available monitor %s needs root access\n"
|
||||
msgstr ""
|
||||
msgstr "Verfügbarer Wächter %s benötigt root-Zugriff\n"
|
||||
|
||||
#: utils/idle_monitor/cpupower-monitor.c:428
|
||||
#, c-format
|
||||
msgid "No HW Cstate monitors found\n"
|
||||
msgstr ""
|
||||
msgstr "Keine HW C-Zustandswächter gefunden\n"
|
||||
|
||||
#: utils/cpupower.c:78
|
||||
#, c-format
|
||||
msgid "cpupower [ -c cpulist ] subcommand [ARGS]\n"
|
||||
msgstr ""
|
||||
msgstr "cpupower [ -c cpulist ] Unterbefehl [ARGS]\n"
|
||||
|
||||
#: utils/cpupower.c:79
|
||||
#, c-format
|
||||
msgid "cpupower --version\n"
|
||||
msgstr ""
|
||||
msgstr "cpupower --version\n"
|
||||
|
||||
#: utils/cpupower.c:80
|
||||
#, c-format
|
||||
msgid "Supported subcommands are:\n"
|
||||
msgstr ""
|
||||
msgstr "Unterstützte Unterbefehle sind:\n"
|
||||
|
||||
#: utils/cpupower.c:83
|
||||
#, c-format
|
||||
|
@ -191,11 +199,15 @@ msgid ""
|
|||
"\n"
|
||||
"Some subcommands can make use of the -c cpulist option.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Einige Unterbefehle können die Option -c cpulist verwenden.\n"
|
||||
|
||||
#: utils/cpupower.c:84
|
||||
#, c-format
|
||||
msgid "Look at the general cpupower manpage how to use it\n"
|
||||
msgstr ""
|
||||
"Schauen Sie sich die allgemeine cpupower manpage an, um zu erfahren, wie man "
|
||||
"es benutzt\n"
|
||||
|
||||
#: utils/cpupower.c:85
|
||||
#, c-format
|
||||
|
@ -217,30 +229,31 @@ msgstr "Bitte melden Sie Fehler an %s.\n"
|
|||
#: utils/cpupower.c:114
|
||||
#, c-format
|
||||
msgid "Error parsing cpu list\n"
|
||||
msgstr ""
|
||||
msgstr "Fehler beim Parsen der CPU-Liste\n"
|
||||
|
||||
#: utils/cpupower.c:172
|
||||
#, c-format
|
||||
msgid "Subcommand %s needs root privileges\n"
|
||||
msgstr ""
|
||||
msgstr "Unterbefehl %s benötigt root-Rechte\n"
|
||||
|
||||
#: utils/cpufreq-info.c:31
|
||||
#, c-format
|
||||
msgid "Couldn't count the number of CPUs (%s: %s), assuming 1\n"
|
||||
msgstr ""
|
||||
"Konnte nicht die Anzahl der CPUs herausfinden (%s : %s), nehme daher 1 an.\n"
|
||||
"Anzahl der CPUs konnte nicht herausgefinden werden (%s: %s), es wird daher 1 "
|
||||
"angenommen\n"
|
||||
|
||||
#: utils/cpufreq-info.c:63
|
||||
#, c-format
|
||||
msgid ""
|
||||
" minimum CPU frequency - maximum CPU frequency - governor\n"
|
||||
msgstr ""
|
||||
" minimale CPU-Taktfreq. - maximale CPU-Taktfreq. - Regler \n"
|
||||
msgstr " minimale CPU-Frequenz - maximale CPU-Frequenz - Regler\n"
|
||||
|
||||
#: utils/cpufreq-info.c:151
|
||||
#, c-format
|
||||
msgid "Error while evaluating Boost Capabilities on CPU %d -- are you root?\n"
|
||||
msgstr ""
|
||||
"Fehler beim Evaluieren der Boost-Fähigkeiten bei CPU %d -- sind Sie root?\n"
|
||||
|
||||
#. P state changes via MSR are identified via cpuid 80000007
|
||||
#. on Intel and AMD, but we assume boost capable machines can do that
|
||||
|
@ -250,50 +263,50 @@ msgstr ""
|
|||
#: utils/cpufreq-info.c:161
|
||||
#, c-format
|
||||
msgid " boost state support: \n"
|
||||
msgstr ""
|
||||
msgstr " Boost-Zustand-Unterstützung: \n"
|
||||
|
||||
#: utils/cpufreq-info.c:163
|
||||
#, c-format
|
||||
msgid " Supported: %s\n"
|
||||
msgstr ""
|
||||
msgstr " Unterstützt: %s\n"
|
||||
|
||||
#: utils/cpufreq-info.c:163 utils/cpufreq-info.c:164
|
||||
msgid "yes"
|
||||
msgstr ""
|
||||
msgstr "ja"
|
||||
|
||||
#: utils/cpufreq-info.c:163 utils/cpufreq-info.c:164
|
||||
msgid "no"
|
||||
msgstr ""
|
||||
msgstr "nein"
|
||||
|
||||
#: utils/cpufreq-info.c:164
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid " Active: %s\n"
|
||||
msgstr " Treiber: %s\n"
|
||||
msgstr " Aktiv: %s\n"
|
||||
|
||||
#: utils/cpufreq-info.c:177
|
||||
#, c-format
|
||||
msgid " Boost States: %d\n"
|
||||
msgstr ""
|
||||
msgstr " Boost-Zustände: %d\n"
|
||||
|
||||
#: utils/cpufreq-info.c:178
|
||||
#, c-format
|
||||
msgid " Total States: %d\n"
|
||||
msgstr ""
|
||||
msgstr " Gesamtzustände: %d\n"
|
||||
|
||||
#: utils/cpufreq-info.c:181
|
||||
#, c-format
|
||||
msgid " Pstate-Pb%d: %luMHz (boost state)\n"
|
||||
msgstr ""
|
||||
msgstr " Pstate-Pb%d: %luMHz (Boost-Zustand)\n"
|
||||
|
||||
#: utils/cpufreq-info.c:184
|
||||
#, c-format
|
||||
msgid " Pstate-P%d: %luMHz\n"
|
||||
msgstr ""
|
||||
msgstr " Pstate-P%d: %luMHz\n"
|
||||
|
||||
#: utils/cpufreq-info.c:211
|
||||
#, c-format
|
||||
msgid " no or unknown cpufreq driver is active on this CPU\n"
|
||||
msgstr " kein oder nicht bestimmbarer cpufreq-Treiber aktiv\n"
|
||||
msgstr " kein oder ein unbekannter cpufreq-Treiber ist auf dieser CPU aktiv\n"
|
||||
|
||||
#: utils/cpufreq-info.c:213
|
||||
#, c-format
|
||||
|
@ -303,12 +316,12 @@ msgstr " Treiber: %s\n"
|
|||
#: utils/cpufreq-info.c:219
|
||||
#, c-format
|
||||
msgid " CPUs which run at the same hardware frequency: "
|
||||
msgstr " Folgende CPUs laufen mit der gleichen Hardware-Taktfrequenz: "
|
||||
msgstr " CPUs, die mit der gleichen Hardwarefrequenz laufen: "
|
||||
|
||||
#: utils/cpufreq-info.c:230
|
||||
#, c-format
|
||||
msgid " CPUs which need to have their frequency coordinated by software: "
|
||||
msgstr " Die Taktfrequenz folgender CPUs werden per Software koordiniert: "
|
||||
msgstr " CPUs, die ihre Frequenz mit Software koordinieren müssen: "
|
||||
|
||||
#: utils/cpufreq-info.c:241
|
||||
#, c-format
|
||||
|
@ -318,22 +331,22 @@ msgstr " Maximale Dauer eines Taktfrequenzwechsels: "
|
|||
#: utils/cpufreq-info.c:247
|
||||
#, c-format
|
||||
msgid " hardware limits: "
|
||||
msgstr " Hardwarebedingte Grenzen der Taktfrequenz: "
|
||||
msgstr " Hardwarebegrenzungen: "
|
||||
|
||||
#: utils/cpufreq-info.c:256
|
||||
#, c-format
|
||||
msgid " available frequency steps: "
|
||||
msgstr " mögliche Taktfrequenzen: "
|
||||
msgstr " verfügbare Frequenzschritte: "
|
||||
|
||||
#: utils/cpufreq-info.c:269
|
||||
#, c-format
|
||||
msgid " available cpufreq governors: "
|
||||
msgstr " mögliche Regler: "
|
||||
msgstr " verfügbare cpufreq-Regler: "
|
||||
|
||||
#: utils/cpufreq-info.c:280
|
||||
#, c-format
|
||||
msgid " current policy: frequency should be within "
|
||||
msgstr " momentane Taktik: die Frequenz soll innerhalb "
|
||||
msgstr " momentane Richtlinie: Frequenz sollte innerhalb "
|
||||
|
||||
#: utils/cpufreq-info.c:282
|
||||
#, c-format
|
||||
|
@ -346,29 +359,28 @@ msgid ""
|
|||
"The governor \"%s\" may decide which speed to use\n"
|
||||
" within this range.\n"
|
||||
msgstr ""
|
||||
" liegen. Der Regler \"%s\" kann frei entscheiden,\n"
|
||||
" welche Taktfrequenz innerhalb dieser Grenze verwendet "
|
||||
"wird.\n"
|
||||
" sein. Der Regler \"%s\" kann frei entscheiden,\n"
|
||||
" welche Geschwindigkeit er in diesem Bereich verwendet.\n"
|
||||
|
||||
#: utils/cpufreq-info.c:293
|
||||
#, c-format
|
||||
msgid " current CPU frequency is "
|
||||
msgstr " momentane Taktfrequenz ist "
|
||||
msgstr " momentane CPU-Frequenz ist "
|
||||
|
||||
#: utils/cpufreq-info.c:296
|
||||
#, c-format
|
||||
msgid " (asserted by call to hardware)"
|
||||
msgstr " (verifiziert durch Nachfrage bei der Hardware)"
|
||||
msgstr " (durch Aufruf der Hardware sichergestellt)"
|
||||
|
||||
#: utils/cpufreq-info.c:304
|
||||
#, c-format
|
||||
msgid " cpufreq stats: "
|
||||
msgstr " Statistik:"
|
||||
msgstr " cpufreq-Statistiken: "
|
||||
|
||||
#: utils/cpufreq-info.c:472
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Usage: cpupower freqinfo [options]\n"
|
||||
msgstr "Aufruf: cpufreq-info [Optionen]\n"
|
||||
msgstr "Aufruf: cpupower freqinfo [Optionen]\n"
|
||||
|
||||
#: utils/cpufreq-info.c:473 utils/cpufreq-set.c:26 utils/cpupower-set.c:23
|
||||
#: utils/cpupower-info.c:22 utils/cpuidle-info.c:148
|
||||
|
@ -377,11 +389,9 @@ msgid "Options:\n"
|
|||
msgstr "Optionen:\n"
|
||||
|
||||
#: utils/cpufreq-info.c:474
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid " -e, --debug Prints out debug information [default]\n"
|
||||
msgstr ""
|
||||
" -e, --debug Erzeugt detaillierte Informationen, hilfreich\n"
|
||||
" zum Aufspüren von Fehlern\n"
|
||||
msgstr " -e, --debug Gibt Debug-Informationen aus [Standard]\n"
|
||||
|
||||
#: utils/cpufreq-info.c:475
|
||||
#, c-format
|
||||
|
@ -424,7 +434,7 @@ msgstr " -p, --policy Findet die momentane Taktik heraus *\n"
|
|||
#: utils/cpufreq-info.c:482
|
||||
#, c-format
|
||||
msgid " -g, --governors Determines available cpufreq governors *\n"
|
||||
msgstr " -g, --governors Erzeugt eine Liste mit verfügbaren Reglern *\n"
|
||||
msgstr " -g, --governors Ermittelt verfügbare cpufreq-Regler *\n"
|
||||
|
||||
#: utils/cpufreq-info.c:483
|
||||
#, c-format
|
||||
|
@ -449,8 +459,7 @@ msgstr ""
|
|||
#: utils/cpufreq-info.c:486
|
||||
#, c-format
|
||||
msgid " -s, --stats Shows cpufreq statistics if available\n"
|
||||
msgstr ""
|
||||
" -s, --stats Zeigt, sofern möglich, Statistiken über cpufreq an.\n"
|
||||
msgstr " -s, --stats Zeigt cpufreq-Statistiken an, falls vorhanden\n"
|
||||
|
||||
#: utils/cpufreq-info.c:487
|
||||
#, c-format
|
||||
|
@ -464,13 +473,13 @@ msgstr ""
|
|||
#: utils/cpufreq-info.c:488
|
||||
#, c-format
|
||||
msgid " -b, --boost Checks for turbo or boost modes *\n"
|
||||
msgstr ""
|
||||
msgstr " -b, --boost Prüft auf Turbo- oder Boost-Modi *\n"
|
||||
|
||||
#: utils/cpufreq-info.c:489
|
||||
#, c-format
|
||||
msgid ""
|
||||
" -o, --proc Prints out information like provided by the /proc/"
|
||||
"cpufreq\n"
|
||||
" -o, --proc Prints out information like provided by the "
|
||||
"/proc/cpufreq\n"
|
||||
" interface in 2.4. and early 2.6. kernels\n"
|
||||
msgstr ""
|
||||
" -o, --proc Erzeugt Informationen in einem ähnlichem Format zu "
|
||||
|
@ -509,8 +518,8 @@ msgid ""
|
|||
"For the arguments marked with *, omitting the -c or --cpu argument is\n"
|
||||
"equivalent to setting it to zero\n"
|
||||
msgstr ""
|
||||
"Bei den mit * markierten Parametern wird '--cpu 0' angenommen, soweit nicht\n"
|
||||
"mittels -c oder --cpu etwas anderes angegeben wird\n"
|
||||
"Für die mit * markierten Argumente ist das Weglassen des Arguments\n"
|
||||
"-c oder --cpu gleichbedeutend mit der Einstellung auf Null\n"
|
||||
|
||||
#: utils/cpufreq-info.c:580
|
||||
#, c-format
|
||||
|
@ -525,8 +534,8 @@ msgid ""
|
|||
"You can't specify more than one --cpu parameter and/or\n"
|
||||
"more than one output-specific argument\n"
|
||||
msgstr ""
|
||||
"Man kann nicht mehr als einen --cpu-Parameter und/oder mehr als einen\n"
|
||||
"informationsspezifischen Parameter gleichzeitig angeben\n"
|
||||
"Sie können nicht mehr als einen Parameter --cpu und/oder\n"
|
||||
"mehr als ein ausgabespezifisches Argument angeben\n"
|
||||
|
||||
#: utils/cpufreq-info.c:600 utils/cpufreq-set.c:82 utils/cpupower-set.c:42
|
||||
#: utils/cpupower-info.c:42 utils/cpuidle-info.c:213
|
||||
|
@ -538,17 +547,17 @@ msgstr "unbekannter oder falscher Parameter\n"
|
|||
#, c-format
|
||||
msgid "couldn't analyze CPU %d as it doesn't seem to be present\n"
|
||||
msgstr ""
|
||||
"Konnte nicht die CPU %d analysieren, da sie (scheinbar?) nicht existiert.\n"
|
||||
"CPU %d konnte nicht analysiert werden, da sie scheinbar nicht existiert\n"
|
||||
|
||||
#: utils/cpufreq-info.c:620 utils/cpupower-info.c:142
|
||||
#, c-format
|
||||
msgid "analyzing CPU %d:\n"
|
||||
msgstr "analysiere CPU %d:\n"
|
||||
msgstr "CPU %d wird analysiert:\n"
|
||||
|
||||
#: utils/cpufreq-set.c:25
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Usage: cpupower frequency-set [options]\n"
|
||||
msgstr "Aufruf: cpufreq-set [Optionen]\n"
|
||||
msgstr "Aufruf: cpupower frequency-set [Optionen]\n"
|
||||
|
||||
#: utils/cpufreq-set.c:27
|
||||
#, c-format
|
||||
|
@ -556,7 +565,7 @@ msgid ""
|
|||
" -d FREQ, --min FREQ new minimum CPU frequency the governor may "
|
||||
"select\n"
|
||||
msgstr ""
|
||||
" -d FREQ, --min FREQ neue minimale Taktfrequenz, die der Regler\n"
|
||||
" -d FREQ, --min FREQ neue minimale CPU-Frequenz, die der Regler\n"
|
||||
" auswählen darf\n"
|
||||
|
||||
#: utils/cpufreq-set.c:28
|
||||
|
@ -571,7 +580,7 @@ msgstr ""
|
|||
#: utils/cpufreq-set.c:29
|
||||
#, c-format
|
||||
msgid " -g GOV, --governor GOV new cpufreq governor\n"
|
||||
msgstr " -g GOV, --governors GOV wechsle zu Regler GOV\n"
|
||||
msgstr " -g GOV, --governors GOV neuer cpufreq-Regler\n"
|
||||
|
||||
#: utils/cpufreq-set.c:30
|
||||
#, c-format
|
||||
|
@ -579,29 +588,29 @@ msgid ""
|
|||
" -f FREQ, --freq FREQ specific frequency to be set. Requires userspace\n"
|
||||
" governor to be available and loaded\n"
|
||||
msgstr ""
|
||||
" -f FREQ, --freq FREQ setze exakte Taktfrequenz. Benötigt den Regler\n"
|
||||
" 'userspace'.\n"
|
||||
" -f FREQ, --freq FREQ bestimmte Frequenz, die eingestellt werden soll.\n"
|
||||
" Erfordert einen verfügbaren und geladenen "
|
||||
"userspace-Regler\n"
|
||||
|
||||
#: utils/cpufreq-set.c:32
|
||||
#, c-format
|
||||
msgid " -r, --related Switches all hardware-related CPUs\n"
|
||||
msgstr ""
|
||||
" -r, --related Setze Werte für alle CPUs, deren Taktfrequenz\n"
|
||||
" hardwarebedingt identisch ist.\n"
|
||||
msgstr " -r, --related Schaltet alle hardwarebezogenen CPUs um\n"
|
||||
|
||||
#: utils/cpufreq-set.c:33 utils/cpupower-set.c:28 utils/cpupower-info.c:27
|
||||
#, c-format
|
||||
msgid " -h, --help Prints out this screen\n"
|
||||
msgstr " -h, --help Gibt diese Kurzübersicht aus\n"
|
||||
msgstr " -h, --help Gibt diesen Bildschirm aus\n"
|
||||
|
||||
#: utils/cpufreq-set.c:35
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Notes:\n"
|
||||
"1. Omitting the -c or --cpu argument is equivalent to setting it to \"all\"\n"
|
||||
msgstr ""
|
||||
"Bei den mit * markierten Parametern wird '--cpu 0' angenommen, soweit nicht\n"
|
||||
"mittels -c oder --cpu etwas anderes angegeben wird\n"
|
||||
"Hinweis:\n"
|
||||
"1. Das Weglassen des Arguments -c oder --cpu ist gleichbedeutend mit der "
|
||||
"Einstellung auf \"all\"\n"
|
||||
|
||||
#: utils/cpufreq-set.c:37
|
||||
#, fuzzy, c-format
|
||||
|
@ -636,17 +645,21 @@ msgid ""
|
|||
"frequency\n"
|
||||
" or because the userspace governor isn't loaded?\n"
|
||||
msgstr ""
|
||||
"Beim Einstellen ist ein Fehler aufgetreten. Typische Fehlerquellen sind:\n"
|
||||
"- nicht ausreichende Rechte (Administrator)\n"
|
||||
"- der Regler ist nicht verfügbar bzw. nicht geladen\n"
|
||||
"- die angegebene Taktik ist inkorrekt\n"
|
||||
"- eine spezifische Frequenz wurde angegeben, aber der Regler 'userspace'\n"
|
||||
" kann entweder hardwarebedingt nicht genutzt werden oder ist nicht geladen\n"
|
||||
"Fehler beim Festlegen neuer Werte. Häufige Fehler:\n"
|
||||
"- Verfügen Sie über die erforderlichen Administrationsrechte? (Superuser?)\n"
|
||||
"- Ist der von Ihnen gewünschte Regler verfügbar und mittels modprobe "
|
||||
"geladen?\n"
|
||||
"- Versuchen Sie eine ungültige Richtlinie festzulegen?\n"
|
||||
"- Versuchen Sie eine bestimmte Frequenz festzulegen, aber der "
|
||||
"userspace-Regler ist nicht verfügbar,\n"
|
||||
" z.B. wegen Hardware, die nicht auf eine bestimmte Frequenz eingestellt "
|
||||
"werden kann\n"
|
||||
" oder weil der userspace-Regler nicht geladen ist?\n"
|
||||
|
||||
#: utils/cpufreq-set.c:170
|
||||
#, c-format
|
||||
msgid "wrong, unknown or unhandled CPU?\n"
|
||||
msgstr "unbekannte oder nicht regelbare CPU\n"
|
||||
msgstr "falsche, unbekannte oder nicht regelbare CPU?\n"
|
||||
|
||||
#: utils/cpufreq-set.c:302
|
||||
#, c-format
|
||||
|
@ -654,8 +667,8 @@ msgid ""
|
|||
"the -f/--freq parameter cannot be combined with -d/--min, -u/--max or\n"
|
||||
"-g/--governor parameters\n"
|
||||
msgstr ""
|
||||
"Der -f bzw. --freq-Parameter kann nicht mit den Parametern -d/--min, -u/--"
|
||||
"max\n"
|
||||
"Der -f bzw. --freq-Parameter kann nicht mit den Parametern -d/--min, "
|
||||
"-u/--max\n"
|
||||
"oder -g/--governor kombiniert werden\n"
|
||||
|
||||
#: utils/cpufreq-set.c:308
|
||||
|
@ -664,18 +677,18 @@ msgid ""
|
|||
"At least one parameter out of -f/--freq, -d/--min, -u/--max, and\n"
|
||||
"-g/--governor must be passed\n"
|
||||
msgstr ""
|
||||
"Es muss mindestens ein Parameter aus -f/--freq, -d/--min, -u/--max oder\n"
|
||||
"-g/--governor angegeben werden.\n"
|
||||
"Mindestens ein Parameter aus -f/--freq, -d/--min, -u/--max und\n"
|
||||
"-g/--governor muss übergeben werden\n"
|
||||
|
||||
#: utils/cpufreq-set.c:347
|
||||
#, c-format
|
||||
msgid "Setting cpu: %d\n"
|
||||
msgstr ""
|
||||
msgstr "CPU einstellen: %d\n"
|
||||
|
||||
#: utils/cpupower-set.c:22
|
||||
#, c-format
|
||||
msgid "Usage: cpupower set [ -b val ] [ -m val ] [ -s val ]\n"
|
||||
msgstr ""
|
||||
msgstr "Aufruf: cpupower set [ -b val ] [ -m val ] [ -s val ]\n"
|
||||
|
||||
#: utils/cpupower-set.c:24
|
||||
#, c-format
|
||||
|
@ -689,6 +702,8 @@ msgstr ""
|
|||
msgid ""
|
||||
" -m, --sched-mc [VAL] Sets the kernel's multi core scheduler policy.\n"
|
||||
msgstr ""
|
||||
" -m, --sched-mc [VAL] Legt die Mehrkern-Scheduler-Richtlinie des "
|
||||
"Kernels fest.\n"
|
||||
|
||||
#: utils/cpupower-set.c:27
|
||||
#, c-format
|
||||
|
@ -700,37 +715,37 @@ msgstr ""
|
|||
#: utils/cpupower-set.c:80
|
||||
#, c-format
|
||||
msgid "--perf-bias param out of range [0-%d]\n"
|
||||
msgstr ""
|
||||
msgstr "--perf-bias-Parameter außerhalb des Bereichs [0-%d]\n"
|
||||
|
||||
#: utils/cpupower-set.c:91
|
||||
#, c-format
|
||||
msgid "--sched-mc param out of range [0-%d]\n"
|
||||
msgstr ""
|
||||
msgstr "Parameter --sched-mc außerhalb des Bereichs [0-%d]\n"
|
||||
|
||||
#: utils/cpupower-set.c:102
|
||||
#, c-format
|
||||
msgid "--sched-smt param out of range [0-%d]\n"
|
||||
msgstr ""
|
||||
msgstr "Parameter --sched-smt außerhalb des Bereichs [0-%d]\n"
|
||||
|
||||
#: utils/cpupower-set.c:121
|
||||
#, c-format
|
||||
msgid "Error setting sched-mc %s\n"
|
||||
msgstr ""
|
||||
msgstr "Fehler beim Einstellen von sched-mc %s\n"
|
||||
|
||||
#: utils/cpupower-set.c:127
|
||||
#, c-format
|
||||
msgid "Error setting sched-smt %s\n"
|
||||
msgstr ""
|
||||
msgstr "Fehler beim Einstellen von sched-smt %s\n"
|
||||
|
||||
#: utils/cpupower-set.c:146
|
||||
#, c-format
|
||||
msgid "Error setting perf-bias value on CPU %d\n"
|
||||
msgstr ""
|
||||
msgstr "Fehler beim Einstellen des perf-bias-Wertes auf der CPU %d\n"
|
||||
|
||||
#: utils/cpupower-info.c:21
|
||||
#, c-format
|
||||
msgid "Usage: cpupower info [ -b ] [ -m ] [ -s ]\n"
|
||||
msgstr ""
|
||||
msgstr "Aufruf: cpupower info [ -b ] [ -m ] [ -s ]\n"
|
||||
|
||||
#: utils/cpupower-info.c:23
|
||||
#, c-format
|
||||
|
@ -740,9 +755,10 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: utils/cpupower-info.c:25
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid " -m, --sched-mc Gets the kernel's multi core scheduler policy.\n"
|
||||
msgstr " -p, --policy Findet die momentane Taktik heraus *\n"
|
||||
msgstr ""
|
||||
" -m, --sched-mc Ruft die Mehrkern-Scheduler-Richtlinie des Kernels ab.\n"
|
||||
|
||||
#: utils/cpupower-info.c:26
|
||||
#, c-format
|
||||
|
@ -756,17 +772,20 @@ msgid ""
|
|||
"\n"
|
||||
"Passing no option will show all info, by default only on core 0\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Wenn Sie keine Option übergeben, werden alle Informationen angezeigt, "
|
||||
"standardmäßig nur auf Kern 0\n"
|
||||
|
||||
#: utils/cpupower-info.c:102
|
||||
#, c-format
|
||||
msgid "System's multi core scheduler setting: "
|
||||
msgstr ""
|
||||
msgstr "Mehrkern-Scheduler-Einstellung des Systems: "
|
||||
|
||||
#. if sysfs file is missing it's: errno == ENOENT
|
||||
#: utils/cpupower-info.c:105 utils/cpupower-info.c:114
|
||||
#, c-format
|
||||
msgid "not supported\n"
|
||||
msgstr ""
|
||||
msgstr "nicht unterstützt\n"
|
||||
|
||||
#: utils/cpupower-info.c:111
|
||||
#, c-format
|
||||
|
@ -786,164 +805,161 @@ msgstr ""
|
|||
#: utils/cpupower-info.c:147
|
||||
#, c-format
|
||||
msgid "Could not read perf-bias value\n"
|
||||
msgstr ""
|
||||
msgstr "perf-bias-Wert konnte nicht gelesen werden\n"
|
||||
|
||||
#: utils/cpupower-info.c:150
|
||||
#, c-format
|
||||
msgid "perf-bias: %d\n"
|
||||
msgstr ""
|
||||
msgstr "perf-bias: %d\n"
|
||||
|
||||
#: utils/cpuidle-info.c:28
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Analyzing CPU %d:\n"
|
||||
msgstr "analysiere CPU %d:\n"
|
||||
msgstr "CPU %d wird analysiert:\n"
|
||||
|
||||
#: utils/cpuidle-info.c:32
|
||||
#, c-format
|
||||
msgid "CPU %u: No idle states\n"
|
||||
msgstr ""
|
||||
msgstr "CPU %u: Keine Ruhezustände\n"
|
||||
|
||||
#: utils/cpuidle-info.c:36
|
||||
#, c-format
|
||||
msgid "CPU %u: Can't read idle state info\n"
|
||||
msgstr ""
|
||||
msgstr "CPU %u: Ruhezustands-Informationen können nicht gelesen werden\n"
|
||||
|
||||
#: utils/cpuidle-info.c:41
|
||||
#, c-format
|
||||
msgid "Could not determine max idle state %u\n"
|
||||
msgstr ""
|
||||
msgstr "Max. Ruhezustand %u konnte nicht bestimmt werden\n"
|
||||
|
||||
#: utils/cpuidle-info.c:46
|
||||
#, c-format
|
||||
msgid "Number of idle states: %d\n"
|
||||
msgstr ""
|
||||
msgstr "Anzahl der Ruhezustände: %d\n"
|
||||
|
||||
#: utils/cpuidle-info.c:48
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Available idle states:"
|
||||
msgstr " mögliche Taktfrequenzen: "
|
||||
msgstr "Verfügbare Ruhezustände:"
|
||||
|
||||
#: utils/cpuidle-info.c:71
|
||||
#, c-format
|
||||
msgid "Flags/Description: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Merker/Beschreibung: %s\n"
|
||||
|
||||
#: utils/cpuidle-info.c:74
|
||||
#, c-format
|
||||
msgid "Latency: %lu\n"
|
||||
msgstr ""
|
||||
msgstr "Latenz: %lu\n"
|
||||
|
||||
#: utils/cpuidle-info.c:76
|
||||
#, c-format
|
||||
msgid "Usage: %lu\n"
|
||||
msgstr ""
|
||||
msgstr "Aufruf: %lu\n"
|
||||
|
||||
#: utils/cpuidle-info.c:78
|
||||
#, c-format
|
||||
msgid "Duration: %llu\n"
|
||||
msgstr ""
|
||||
msgstr "Dauer: %llu\n"
|
||||
|
||||
#: utils/cpuidle-info.c:90
|
||||
#, c-format
|
||||
msgid "Could not determine cpuidle driver\n"
|
||||
msgstr ""
|
||||
msgstr "cpuidle-Treiber konnte nicht bestimmt werden\n"
|
||||
|
||||
#: utils/cpuidle-info.c:94
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "CPUidle driver: %s\n"
|
||||
msgstr " Treiber: %s\n"
|
||||
msgstr "CPUidle-Treiber: %s\n"
|
||||
|
||||
#: utils/cpuidle-info.c:99
|
||||
#, c-format
|
||||
msgid "Could not determine cpuidle governor\n"
|
||||
msgstr ""
|
||||
msgstr "cpuidle-Regler konnte nicht bestimmt werden\n"
|
||||
|
||||
#: utils/cpuidle-info.c:103
|
||||
#, c-format
|
||||
msgid "CPUidle governor: %s\n"
|
||||
msgstr ""
|
||||
msgstr "CPUidle-Regler: %s\n"
|
||||
|
||||
#: utils/cpuidle-info.c:122
|
||||
#, c-format
|
||||
msgid "CPU %u: Can't read C-state info\n"
|
||||
msgstr ""
|
||||
msgstr "CPU %u: C-Zustands-Informationen können nicht gelesen werden\n"
|
||||
|
||||
#. printf("Cstates: %d\n", cstates);
|
||||
#: utils/cpuidle-info.c:127
|
||||
#, c-format
|
||||
msgid "active state: C0\n"
|
||||
msgstr ""
|
||||
msgstr "aktiver Zustand: C0\n"
|
||||
|
||||
#: utils/cpuidle-info.c:128
|
||||
#, c-format
|
||||
msgid "max_cstate: C%u\n"
|
||||
msgstr ""
|
||||
msgstr "max_cstate: C%u\n"
|
||||
|
||||
#: utils/cpuidle-info.c:129
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "maximum allowed latency: %lu usec\n"
|
||||
msgstr " Maximale Dauer eines Taktfrequenzwechsels: "
|
||||
msgstr "maximal erlaubte Latenz: %lu usec\n"
|
||||
|
||||
#: utils/cpuidle-info.c:130
|
||||
#, c-format
|
||||
msgid "states:\t\n"
|
||||
msgstr ""
|
||||
msgstr "Zustände:\t\n"
|
||||
|
||||
#: utils/cpuidle-info.c:132
|
||||
#, c-format
|
||||
msgid " C%d: type[C%d] "
|
||||
msgstr ""
|
||||
msgstr " C%d: Typ[C%d] "
|
||||
|
||||
#: utils/cpuidle-info.c:134
|
||||
#, c-format
|
||||
msgid "promotion[--] demotion[--] "
|
||||
msgstr ""
|
||||
msgstr "promotion[--] demotion[--] "
|
||||
|
||||
#: utils/cpuidle-info.c:135
|
||||
#, c-format
|
||||
msgid "latency[%03lu] "
|
||||
msgstr ""
|
||||
msgstr "Latenz[%03lu] "
|
||||
|
||||
#: utils/cpuidle-info.c:137
|
||||
#, c-format
|
||||
msgid "usage[%08lu] "
|
||||
msgstr ""
|
||||
msgstr "Aufruf[%08lu] "
|
||||
|
||||
#: utils/cpuidle-info.c:139
|
||||
#, c-format
|
||||
msgid "duration[%020Lu] \n"
|
||||
msgstr ""
|
||||
msgstr "Dauer[%020Lu] \n"
|
||||
|
||||
#: utils/cpuidle-info.c:147
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Usage: cpupower idleinfo [options]\n"
|
||||
msgstr "Aufruf: cpufreq-info [Optionen]\n"
|
||||
msgstr "Aufruf: cpupower idleinfo [Optionen]\n"
|
||||
|
||||
#: utils/cpuidle-info.c:149
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid " -s, --silent Only show general C-state information\n"
|
||||
msgstr ""
|
||||
" -e, --debug Erzeugt detaillierte Informationen, hilfreich\n"
|
||||
" zum Aufspüren von Fehlern\n"
|
||||
" -s, --silent Nur allgemeine C-Zustands-Informationen anzeigen\n"
|
||||
|
||||
#: utils/cpuidle-info.c:150
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
" -o, --proc Prints out information like provided by the /proc/"
|
||||
"acpi/processor/*/power\n"
|
||||
" -o, --proc Prints out information like provided by the "
|
||||
"/proc/acpi/processor/*/power\n"
|
||||
" interface in older kernels\n"
|
||||
msgstr ""
|
||||
" -o, --proc Erzeugt Informationen in einem ähnlichem Format zu "
|
||||
"dem\n"
|
||||
" der /proc/cpufreq-Datei in 2.4. und frühen 2.6.\n"
|
||||
" Kernel-Versionen\n"
|
||||
" -o, --proc Gibt Informationen so aus, wie sie von der "
|
||||
"Schnittstelle\n"
|
||||
" /proc/acpi/processor/*/power in älteren Kerneln "
|
||||
"bereitgestellt werden\n"
|
||||
|
||||
#: utils/cpuidle-info.c:209
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "You can't specify more than one output-specific argument\n"
|
||||
msgstr ""
|
||||
"Man kann nicht mehr als einen --cpu-Parameter und/oder mehr als einen\n"
|
||||
"informationsspezifischen Parameter gleichzeitig angeben\n"
|
||||
msgstr "Sie können nicht mehr als ein ausgabenspezifisches Argument angeben\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ " -c CPU, --cpu CPU CPU number which information shall be determined "
|
||||
|
@ -956,6 +972,6 @@ msgstr ""
|
|||
#~ " -c CPU, --cpu CPU number of CPU where cpufreq settings shall be "
|
||||
#~ "modified\n"
|
||||
#~ msgstr ""
|
||||
#~ " -c CPU, --cpu CPU Nummer der CPU, deren Taktfrequenz-"
|
||||
#~ "Einstellung\n"
|
||||
#~ " -c CPU, --cpu CPU Nummer der CPU, deren "
|
||||
#~ "Taktfrequenz-Einstellung\n"
|
||||
#~ " werden soll\n"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
p m - g r a p h
|
||||
|
||||
pm-graph: suspend/resume/boot timing analysis tools
|
||||
Version: 5.4
|
||||
Version: 5.5
|
||||
Author: Todd Brandt <todd.e.brandt@intel.com>
|
||||
Home Page: https://01.org/pm-graph
|
||||
|
||||
|
@ -18,6 +18,10 @@
|
|||
- upstream version in git:
|
||||
https://github.com/intel/pm-graph/
|
||||
|
||||
Requirements:
|
||||
- runs with python2 or python3, choice is made by /usr/bin/python link
|
||||
- python2 now requires python-configparser be installed
|
||||
|
||||
Table of Contents
|
||||
- Overview
|
||||
- Setup
|
||||
|
|
|
@ -1,9 +1,18 @@
|
|||
#!/usr/bin/python2
|
||||
#!/usr/bin/python
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Tool for analyzing boot timing
|
||||
# Copyright (c) 2013, Intel Corporation.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms and conditions of the GNU General Public License,
|
||||
# version 2, as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
# more details.
|
||||
#
|
||||
# Authors:
|
||||
# Todd Brandt <todd.e.brandt@linux.intel.com>
|
||||
#
|
||||
|
@ -81,7 +90,7 @@ class SystemValues(aslib.SystemValues):
|
|||
cmdline = 'initcall_debug log_buf_len=32M'
|
||||
if self.useftrace:
|
||||
if self.cpucount > 0:
|
||||
bs = min(self.memtotal / 2, 2*1024*1024) / self.cpucount
|
||||
bs = min(self.memtotal // 2, 2*1024*1024) // self.cpucount
|
||||
else:
|
||||
bs = 131072
|
||||
cmdline += ' trace_buf_size=%dK trace_clock=global '\
|
||||
|
@ -137,13 +146,13 @@ class SystemValues(aslib.SystemValues):
|
|||
if arg in ['-h', '-v', '-cronjob', '-reboot', '-verbose']:
|
||||
continue
|
||||
elif arg in ['-o', '-dmesg', '-ftrace', '-func']:
|
||||
args.next()
|
||||
next(args)
|
||||
continue
|
||||
elif arg == '-result':
|
||||
cmdline += ' %s "%s"' % (arg, os.path.abspath(args.next()))
|
||||
cmdline += ' %s "%s"' % (arg, os.path.abspath(next(args)))
|
||||
continue
|
||||
elif arg == '-cgskip':
|
||||
file = self.configFile(args.next())
|
||||
file = self.configFile(next(args))
|
||||
cmdline += ' %s "%s"' % (arg, os.path.abspath(file))
|
||||
continue
|
||||
cmdline += ' '+arg
|
||||
|
@ -292,11 +301,11 @@ def parseKernelLog():
|
|||
tp = aslib.TestProps()
|
||||
devtemp = dict()
|
||||
if(sysvals.dmesgfile):
|
||||
lf = open(sysvals.dmesgfile, 'r')
|
||||
lf = open(sysvals.dmesgfile, 'rb')
|
||||
else:
|
||||
lf = Popen('dmesg', stdout=PIPE).stdout
|
||||
for line in lf:
|
||||
line = line.replace('\r\n', '')
|
||||
line = aslib.ascii(line).replace('\r\n', '')
|
||||
# grab the stamp and sysinfo
|
||||
if re.match(tp.stampfmt, line):
|
||||
tp.stamp = line
|
||||
|
@ -649,7 +658,7 @@ def createBootGraph(data):
|
|||
statinfo += '\t"%s": [\n\t\t"%s",\n' % (n, devstats[n]['info'])
|
||||
if 'fstat' in devstats[n]:
|
||||
funcs = devstats[n]['fstat']
|
||||
for f in sorted(funcs, key=funcs.get, reverse=True):
|
||||
for f in sorted(funcs, key=lambda k:(funcs[k], k), reverse=True):
|
||||
if funcs[f][0] < 0.01 and len(funcs) > 10:
|
||||
break
|
||||
statinfo += '\t\t"%f|%s|%d",\n' % (funcs[f][0], f, funcs[f][1])
|
||||
|
@ -729,7 +738,7 @@ def updateCron(restore=False):
|
|||
op.write('@reboot python %s\n' % sysvals.cronjobCmdString())
|
||||
op.close()
|
||||
res = call([cmd, cronfile])
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
pprint('Exception: %s' % str(e))
|
||||
shutil.move(backfile, cronfile)
|
||||
res = -1
|
||||
|
@ -745,7 +754,7 @@ def updateGrub(restore=False):
|
|||
try:
|
||||
call(sysvals.blexec, stderr=PIPE, stdout=PIPE,
|
||||
env={'PATH': '.:/sbin:/usr/sbin:/usr/bin:/sbin:/bin'})
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
pprint('Exception: %s\n' % str(e))
|
||||
return
|
||||
# extract the option and create a grub config without it
|
||||
|
@ -792,7 +801,7 @@ def updateGrub(restore=False):
|
|||
op.close()
|
||||
res = call(sysvals.blexec)
|
||||
os.remove(grubfile)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
pprint('Exception: %s' % str(e))
|
||||
res = -1
|
||||
# cleanup
|
||||
|
@ -866,6 +875,7 @@ def printHelp():
|
|||
'Other commands:\n'\
|
||||
' -flistall Print all functions capable of being captured in ftrace\n'\
|
||||
' -sysinfo Print out system info extracted from BIOS\n'\
|
||||
' -which exec Print an executable path, should function even without PATH\n'\
|
||||
' [redo]\n'\
|
||||
' -dmesg file Create HTML output using dmesg input (used with -ftrace)\n'\
|
||||
' -ftrace file Create HTML output using ftrace input (used with -dmesg)\n'\
|
||||
|
@ -907,13 +917,13 @@ if __name__ == '__main__':
|
|||
sysvals.mincglen = aslib.getArgFloat('-mincg', args, 0.0, 10000.0)
|
||||
elif(arg == '-cgfilter'):
|
||||
try:
|
||||
val = args.next()
|
||||
val = next(args)
|
||||
except:
|
||||
doError('No callgraph functions supplied', True)
|
||||
sysvals.setCallgraphFilter(val)
|
||||
elif(arg == '-cgskip'):
|
||||
try:
|
||||
val = args.next()
|
||||
val = next(args)
|
||||
except:
|
||||
doError('No file supplied', True)
|
||||
if val.lower() in switchoff:
|
||||
|
@ -924,7 +934,7 @@ if __name__ == '__main__':
|
|||
doError('%s does not exist' % cgskip)
|
||||
elif(arg == '-bl'):
|
||||
try:
|
||||
val = args.next()
|
||||
val = next(args)
|
||||
except:
|
||||
doError('No boot loader name supplied', True)
|
||||
if val.lower() not in ['grub']:
|
||||
|
@ -937,7 +947,7 @@ if __name__ == '__main__':
|
|||
sysvals.max_graph_depth = aslib.getArgInt('-maxdepth', args, 0, 1000)
|
||||
elif(arg == '-func'):
|
||||
try:
|
||||
val = args.next()
|
||||
val = next(args)
|
||||
except:
|
||||
doError('No filter functions supplied', True)
|
||||
sysvals.useftrace = True
|
||||
|
@ -946,7 +956,7 @@ if __name__ == '__main__':
|
|||
sysvals.setGraphFilter(val)
|
||||
elif(arg == '-ftrace'):
|
||||
try:
|
||||
val = args.next()
|
||||
val = next(args)
|
||||
except:
|
||||
doError('No ftrace file supplied', True)
|
||||
if(os.path.exists(val) == False):
|
||||
|
@ -959,7 +969,7 @@ if __name__ == '__main__':
|
|||
sysvals.cgexp = True
|
||||
elif(arg == '-dmesg'):
|
||||
try:
|
||||
val = args.next()
|
||||
val = next(args)
|
||||
except:
|
||||
doError('No dmesg file supplied', True)
|
||||
if(os.path.exists(val) == False):
|
||||
|
@ -968,13 +978,13 @@ if __name__ == '__main__':
|
|||
sysvals.dmesgfile = val
|
||||
elif(arg == '-o'):
|
||||
try:
|
||||
val = args.next()
|
||||
val = next(args)
|
||||
except:
|
||||
doError('No subdirectory name supplied', True)
|
||||
sysvals.testdir = sysvals.setOutputFolder(val)
|
||||
elif(arg == '-result'):
|
||||
try:
|
||||
val = args.next()
|
||||
val = next(args)
|
||||
except:
|
||||
doError('No result file supplied', True)
|
||||
sysvals.result = val
|
||||
|
@ -986,6 +996,17 @@ if __name__ == '__main__':
|
|||
# remaining options are only for cron job use
|
||||
elif(arg == '-cronjob'):
|
||||
sysvals.iscronjob = True
|
||||
elif(arg == '-which'):
|
||||
try:
|
||||
val = next(args)
|
||||
except:
|
||||
doError('No executable supplied', True)
|
||||
out = sysvals.getExec(val)
|
||||
if not out:
|
||||
print('%s not found' % val)
|
||||
sys.exit(1)
|
||||
print(out)
|
||||
sys.exit(0)
|
||||
else:
|
||||
doError('Invalid argument: '+arg, True)
|
||||
|
||||
|
|
|
@ -53,10 +53,10 @@ disable rtcwake and require a user keypress to resume.
|
|||
Add the dmesg and ftrace logs to the html output. They will be viewable by
|
||||
clicking buttons in the timeline.
|
||||
.TP
|
||||
\fB-turbostat\fR
|
||||
Use turbostat to execute the command in freeze mode (default: disabled). This
|
||||
will provide turbostat output in the log which will tell you which actual
|
||||
power modes were entered.
|
||||
\fB-noturbostat\fR
|
||||
By default, if turbostat is found and the requested mode is freeze, sleepgraph
|
||||
will execute the suspend via turbostat and collect data in the timeline log.
|
||||
This option disables the use of turbostat.
|
||||
.TP
|
||||
\fB-result \fIfile\fR
|
||||
Export a results table to a text file for parsing.
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Загрузка…
Ссылка в новой задаче