Ошибка записи недопустимый аргумент

I am new to bash and trying to write a script that disables kworker business as in aMaia’s answer here.

So far, I have this, which I run from root:

  1 #!/bin/bash                                                                      
  2                                                                                  
  3 cd /sys/firmware/acpi/interrupts                                                 
  4 for i in gpe[[:digit:]]* # Don't mess with gpe_all                               
  5 do                                                                               
  6     num=`awk '{print $1}' $i`                                                    
  7     if (( $num >= 1000 )); then  # potential CPU hogs?                           
  8         # Back it up and then disable it!!                                       
  9         cp $i /root/${i}.backup                                                  
 10         echo "disable" > $i                                                      
 11     fi                                                                           
 12 done  

But running it results in:

./kkiller: line 10: echo: write error: Invalid argument

What is going on here? I thought $i was just the file name, which seems like the correct syntax for echo.

Suggestions for cleaning up/improving the script in general are also appreciated!

Update: With set -vx added to the top of the script, here is a problematic iteration:

+ for i in 'gpe[[:digit:]]*'
awk '{print $1}' $i
++ awk '{print $1}' gpe66
+ num=1024908
+ ((  1024908 >= 1000  ))
+ cp gpe66 /root/gpe66.backup
+ echo disable
./kkiller: line 10: echo: write error: Invalid argument

Что то я не понимаю..

lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 4: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 4: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M

хочу отключить bus 1,

пытался к второй шине подключить..тот же результат..

lspci | grep USB
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)

где глянуть поддерживает ли hub управление питанием? хотя точно поддерживает, это ноутбук..через laptop-mode-tools USB то отключаются…

vsafonin

(25.08.17 19:26:40 MSK)

  • Ссылка

Writing to a custom character device using

cat 123 > /dev/chardev

gives

cat: write error: Invalid argument

I have changed the permissions to 666 and even tried it with sudo. Still the same results.
Also tried echo in similar way

I use Arch linux 4.8.

Edit: The code for the driver

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <asm/uaccess.h>


//Prototypes
static int __init init(void);
static void __exit cleanup(void);
static int device_open(struct inode *,struct file *);
static int device_release(struct inode *, struct file *);
static ssize_t device_read(struct file *, char *, size_t, loff_t *);
static ssize_t device_write(struct file *, const char *, size_t, loff_t *);

#define SUCCESS 0
#define DEVICE_NAME "chardev" /* Dev name as it appears in /proc/devices*/
#define BUF_LEN 80 /* Max length of the message from the device */

static int Major; //Major number of the devices
static int Device_Open = 0;

static char msg[BUF_LEN]; //Message given when asked
static char *msg_Ptr;

static struct file_operations fops = {
    .read = device_read,
    .write = device_write,
    .open = device_open,
    .release = device_release
};

static int __init init(){
    Major = register_chrdev(0,DEVICE_NAME,&fops);
    if(Major < 0){
        printk(KERN_ALERT "Failure in registering the device. %dn", Major);
        return Major;
  }
    printk(KERN_INFO "%s registered with major %d n",DEVICE_NAME,Major);
    printk(KERN_INFO "create a device with 'mknod /dev/%s c %d 0'n",DEVICE_NAME,Major);
    printk(KERN_INFO "Try to cat and echo the file and shit man.n");
    return SUCCESS;
}

static void __exit cleanup(){
    unregister_chrdev(Major, DEVICE_NAME);
    printk(KERN_ALERT "Unregistered the device %s i guess? n"DEVICE_NAME);
}   

static int device_open(struct inode *inode,struct file *file){
    static int counter = 0;
    if(Device_Open)
        return -EBUSY;

    Device_Open++;
    sprintf(msg, "I already told you %d times Hello world!n", counter++);
    msg_Ptr = msg;
    try_module_get(THIS_MODULE);
    return SUCCESS;
}

static int device_release(struct inode *inode,struct file *file){
    Device_Open--;
    module_put(THIS_MODULE);
    return 0;
}

static ssize_t device_read(struct file *filp, char *buffer, size_t length, loff_t * offset){
    int bytes_read = 0;
    if(*msg_Ptr == 0)
        return 0;
    while(length && *msg_Ptr){
        put_user(*(msg_Ptr++),buffer++);
        length--;   
        bytes_read++;
    }
    return bytes_read;
}

static ssize_t device_write(struct file *filp,const char *buff, size_t len, loff_t *off){
    printk(KERN_ALERT "You cannot write to this device.n");
    return -EINVAL;
}

module_init(init);
module_exit(cleanup);

So here we can see that i have even used a device_write function and assigned it in the fops struct to .write. So isn’t it supposed to accept write command and print that statement in the log?

Writing to a custom character device using

cat 123 > /dev/chardev

gives

cat: write error: Invalid argument

I have changed the permissions to 666 and even tried it with sudo. Still the same results.
Also tried echo in similar way

I use Arch linux 4.8.

Edit: The code for the driver

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <asm/uaccess.h>


//Prototypes
static int __init init(void);
static void __exit cleanup(void);
static int device_open(struct inode *,struct file *);
static int device_release(struct inode *, struct file *);
static ssize_t device_read(struct file *, char *, size_t, loff_t *);
static ssize_t device_write(struct file *, const char *, size_t, loff_t *);

#define SUCCESS 0
#define DEVICE_NAME "chardev" /* Dev name as it appears in /proc/devices*/
#define BUF_LEN 80 /* Max length of the message from the device */

static int Major; //Major number of the devices
static int Device_Open = 0;

static char msg[BUF_LEN]; //Message given when asked
static char *msg_Ptr;

static struct file_operations fops = {
    .read = device_read,
    .write = device_write,
    .open = device_open,
    .release = device_release
};

static int __init init(){
    Major = register_chrdev(0,DEVICE_NAME,&fops);
    if(Major < 0){
        printk(KERN_ALERT "Failure in registering the device. %dn", Major);
        return Major;
  }
    printk(KERN_INFO "%s registered with major %d n",DEVICE_NAME,Major);
    printk(KERN_INFO "create a device with 'mknod /dev/%s c %d 0'n",DEVICE_NAME,Major);
    printk(KERN_INFO "Try to cat and echo the file and shit man.n");
    return SUCCESS;
}

static void __exit cleanup(){
    unregister_chrdev(Major, DEVICE_NAME);
    printk(KERN_ALERT "Unregistered the device %s i guess? n"DEVICE_NAME);
}   

static int device_open(struct inode *inode,struct file *file){
    static int counter = 0;
    if(Device_Open)
        return -EBUSY;

    Device_Open++;
    sprintf(msg, "I already told you %d times Hello world!n", counter++);
    msg_Ptr = msg;
    try_module_get(THIS_MODULE);
    return SUCCESS;
}

static int device_release(struct inode *inode,struct file *file){
    Device_Open--;
    module_put(THIS_MODULE);
    return 0;
}

static ssize_t device_read(struct file *filp, char *buffer, size_t length, loff_t * offset){
    int bytes_read = 0;
    if(*msg_Ptr == 0)
        return 0;
    while(length && *msg_Ptr){
        put_user(*(msg_Ptr++),buffer++);
        length--;   
        bytes_read++;
    }
    return bytes_read;
}

static ssize_t device_write(struct file *filp,const char *buff, size_t len, loff_t *off){
    printk(KERN_ALERT "You cannot write to this device.n");
    return -EINVAL;
}

module_init(init);
module_exit(cleanup);

So here we can see that i have even used a device_write function and assigned it in the fops struct to .write. So isn’t it supposed to accept write command and print that statement in the log?

Я новичок в bash и пытаюсь написать сценарий, который отключает бизнес kworker, как в ответе aMaia здесь.

Пока у меня есть это, которое я запускаю от root:

  1 #!/bin/bash                                                                      
  2                                                                                  
  3 cd /sys/firmware/acpi/interrupts                                                 
  4 for i in gpe[[:digit:]]* # Don't mess with gpe_all                               
  5 do                                                                               
  6     num=`awk '{print $1}' $i`                                                    
  7     if (( $num >= 1000 )); then  # potential CPU hogs?                           
  8         # Back it up and then disable it!!                                       
  9         cp $i /root/${i}.backup                                                  
 10         echo "disable" > $i                                                      
 11     fi                                                                           
 12 done  

Но его запуск приводит к:

./kkiller: line 10: echo: write error: Invalid argument

Что здесь происходит? Я думал, что $i — это просто имя файла, что похоже на правильный синтаксис для эха.

Также приветствуются предложения по очистке / улучшению скрипта в целом!

Обновление: с set -vx, добавленным в начало скрипта, возникает проблемная итерация:

+ for i in 'gpe[[:digit:]]*'
awk '{print $1}' $i
++ awk '{print $1}' gpe66
+ num=1024908
+ ((  1024908 >= 1000  ))
+ cp gpe66 /root/gpe66.backup
+ echo disable
./kkiller: line 10: echo: write error: Invalid argument

4 ответа

Лучший ответ

Я думаю, это как-то связано с разрешениями. Я не думаю, что root по умолчанию имеет права на запись в эти файлы. Попробуйте вручную повторить «отключить» для этого файла, даже если вы используете root, вы получите ту же ошибку. Итак, чтобы ваш скрипт заработал, сначала выполните команду chmod 744 для $ i перед эхо, это должно сработать.


0

MajorT
1 Янв 2015 в 21:55

У меня тоже была эта проблема в Docker в среде Alpine linux. Я думаю, проблема в том, что echo по умолчанию помещает символ новой строки в конец строки, и ядро ​​не принимает его, но это не так во всех системах. В Docker у меня была эта ошибка, но значение было записано, несмотря на сообщение об ошибке.

Решение (в Bash): echo -n disable >/sys/firmware/acpi/interrupts/gpe66. Таким образом, новая строка не отображается.


8

Adam Wallner
12 Апр 2017 в 21:40

Еще раз проверьте орфографию. echo «disabled» выдаст ошибку записи даже для root, тогда как echo «disable» завершится успешно.


3

Chris Dunder
5 Фев 2015 в 07:43

Я получил такое же сообщение об ошибке, пытаясь отключить GPE, который уже был отключен:

# echo "disable" > /sys/firmware/acpi/interrupts/gpe17
-su: echo: write error: Invalid argument
# cat /sys/firmware/acpi/interrupts/gpe17
 3718289     STS disabled     unmasked

После включения я мог отключить его без ошибок:

# echo "enable" > /sys/firmware/acpi/interrupts/gpe17
# echo "disable" > /sys/firmware/acpi/interrupts/gpe17
# 


0

Peter Nowee
4 Июл 2019 в 02:51

В этом руководстве мы покажем вам, как исправить ошибку (FAILED (ошибка записи на устройство (неверный аргумент)). Трудно представить экосистему Android без существования команд ADB и Fastboot. Они используются в таком широком массив доменов, что он стал хлебом с маслом для технических энтузиастов, но в то же время они также свободны от своей доли проблем.

На самом деле, я уже рассмотрел более 20+ ошибок ADB и Fastboot и их исправлений, но, похоже, к этому списку каждый день добавляются новые. И теперь, кажется, к этой семье вот-вот прибавится еще один член. От разных пользователей поступило множество жалоб на то, что они получают ошибки из-за вышеупомянутой ошибки. Это не то. Это сообщение об ошибке, по-видимому, принимает и другие формы. К ним относятся такие, как:

FAILED (сбой записи на устройство (неизвестная ошибка)) (FAILED (сбой записи на устройство (неверный аргумент)) fastboot FAILED (сбой записи команды (успешно))

К счастью, решение всех этих трех проблем аналогично. И в этом руководстве мы сообщим вам об этом. Итак, без лишних слов, давайте начнем с шагов по исправлению ошибки (FAILED (ошибка записи на устройство (недопустимый аргумент))).

Как такового универсального решения для этой ошибки не существует. Вам придется попробовать каждое из перечисленных ниже исправлений, пока вы не добьетесь успеха. Droidwin и его участники не будут нести ответственность в случае термоядерной войны, если ваш будильник не разбудит вас, или если что-то случится с вашим устройством и данными, выполнив следующие шаги.

Исправление 1: Используйте официальные бинарные файлы ADB

Прежде всего, настоятельно рекомендуется использовать последние и, что более важно, официальные двоичные файлы ADB, предоставленные Google. Уже существует множество сторонних инструментов ADB и Fastboot, однако вы должны поддерживать социальную дистанцию ​​от всех из них и придерживаться только предложений от Google.

  1. Поэтому загрузите Android SDK Platform Tools из Google.
  2. Затем распакуйте его в любое удобное место на вашем ПК.
  3. Это даст вам папку с инструментами платформы.
  4. Перейдите в эту папку, введите CMD в ее адресной строке и нажмите Enter.
  5. Это запустит окно командной строки в каталоге ADB.
  6. Теперь перенесите нужный файл, который вы собираетесь прошить, в эту папку с инструментами платформы.
  7. Наконец, выполните нужную команду и посмотрите, была ли исправлена ​​ошибка (FAILED (ошибка записи на устройство (неверный аргумент))).

Исправление 2. Установите USB-драйверы для Android

Драйверы USB являются неотъемлемой частью экосистемы смартфонов. Они нужны для того, чтобы ваш ПК смог распознать подключенное устройство. Итак, вперед, загрузите и установите драйверы android_win.inf на свой ПК с Windows. Если это не сработает, рассмотрите также возможность установки драйверов интерфейса загрузчика Android. Установите оба из них, а затем проверьте, исправляют ли они ошибку (FAILED (сбой записи на устройство (недопустимый аргумент))).

Исправление 3: используйте официальный USB-кабель | Порт USB 2.0

Следующие два исправления очевидны из их названий. Во-первых, рекомендуется использовать официальные USB-кабели, поставляемые с вашим устройством. Если это невозможно, используйте кабель, поддерживающий MTP (передачу файлов).

Точно так же вы должны использовать только порт USB 2.0 на вашем ПК. Известно, что использование более быстрых версий 3.0 вызывает довольно много проблем, особенно в пользовательской области разработки. Поэтому попробуйте обе эти настройки и посмотрите, исправят ли они ошибку (FAILED (сбой записи на устройство (недопустимый аргумент))).

Исправление 4: Исправление для ПК Ryzen

У ПК на базе Ryzen всегда были отношения любви и ненависти к пользовательской разработке. Было множество хорошо задокументированных случаев, когда команды ADB и Fastboot не выполнялись успешно. Так что, если вы также используете чип Ryzen, то это руководство — то, что вам нужно: Как исправить проблемы Android ADB и Fastboot на ПК на базе Ryzen. Попробуйте все исправления, упомянутые в связанном руководстве (особенно последние два), и ваша проблема будет устранена.

Итак, все это было из этого руководства о том, как исправить ошибку (FAILED (ошибка записи на устройство (неверный аргумент))). Аналогичным образом, вышеупомянутые инструкции также должны исправить FAILED (ошибка записи на устройство (неизвестная ошибка)). Позвольте нам узнайте в разделе комментариев, какой из них принес вам успех, Точно так же, если у вас есть какие-либо вопросы, остановите их в комментариях ниже.

Что то я не понимаю..

lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 4: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 4: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M

хочу отключить bus 1,

пытался к второй шине подключить..тот же результат..

lspci | grep USB
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)

где глянуть поддерживает ли hub управление питанием? хотя точно поддерживает, это ноутбук..через laptop-mode-tools USB то отключаются…

vsafonin

(25.08.17 19:26:40 MSK)

  • Ссылка
  • Печать

Страницы: [1]   Вниз

Тема: Нету режима работы процессора ondemand  (Прочитано 946 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
stlu

Здраствуйте,я новичок в линукс и меня интересуют несколько вопросов:

sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governorsпри вводе этой команды пишет что есть только 2 доступные режимы: performance и powersave,а я хочу поставить ondemand. Процессор вроде не старый (если от этого что-то зависит) intel core i5 9300H стоит ubuntu 18.04 LTS. При попытке этим способом допустим

for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f $CPUFREQ ] || continue; echo -n ondemand > $CPUFREQ; done
выдает bash: echo: ошибка записи: Недопустимый аргумент.
Возможно ли как-то установить самому этот режым? Или изменить ничего уже нельзя?
Буду благодарен за любую помощь.


Оффлайн
ALiEN175

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor?

ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE


Оффлайн
stlu


Оффлайн
The Green Side

Не смогу ответить на вопрос, но могу предложить обойти проблему.

gamemode

— утилита для изменения режима работы процессора в полуавтоматическом режиме. После установки модифицируете .desktop файл любого приложения таким образом:

Exec=gamemoderun steamпредварительно скопировав его в

.local/share/applications

И указанное приложение теперь активирует режим performance
При закрытии приложения режим powersave возвращается

Debian 11, Debian 11 Server


Оффлайн
andytux

есть только 2 доступные режимы: performance и powersave

Значит только эти режимы есть у твоего процессора.
Посмотрел у себя: conservative ondemand userspace powersave performance schedutil. Выбран: ondemand.
lubuntu 18.04.

Возможно ли как-то установить самому этот режым? Или изменить ничего уже нельзя?

Нет. Нельзя.

« Последнее редактирование: 01 Февраля 2020, 07:26:57 от andytux »


Оффлайн
xArtem1991x

Попробовал на KDE neon выполнить команду
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Пишет — Нет такого файла или каталога


Оффлайн
andytux

xArtem1991x, скопировал твою команду, вставил, выполнил. Запросила пароль, вывела список.
Как минимум, в команде нет ошибок. Как вариант, посмотри глазами, что там у тебя есть.


Оффлайн
Pilot6

у свежих интелов нет ondemand, вы читаете старые инструкции. Сейчас используется intel psave. Там всего два варианта. И работает он лучше. Можно забубенить даже на новом железе старорежимный драйвер, можете попробовать найти в сети как это делается. Только непонятно зачем это нужно. По умолчанию стоит powersave, он во всех отношениях лучше ondemand.

Я в личке не консультирую. Вопросы задавайте на форуме.


Оффлайн
ALiEN175

ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE


Оффлайн
Pilot6

Посмотрел у себя: conservative ondemand userspace powersave performance schedutil. Выбран: ondemand.

У вас cpu небось не интел.

Я в личке не консультирую. Вопросы задавайте на форуме.


Оффлайн
andytux

У вас cpu небось не интел.

Интел, очень древний. SpeedStep тогда только появился.


Оффлайн
Pilot6

Интел, очень древний.

Если проц не поддерживает pstate — тогда нормально. У меня на amd тоже ondemand есть.

Я в личке не консультирую. Вопросы задавайте на форуме.


  • Печать

Страницы: [1]   Вверх

Имел идентичную проблему с Msysgit v1.7.2.3, последней версией по состоянию на 29 сентября 10, и хотел поделиться своими выводами здесь (Google обнаруживает несколько случаев, но без решений).

Попытка выполнить «git svn rebase» для репо (в котором это работало много раз в прошлом) постоянно терпела неудачу с «фатальной: ошибка записи: недопустимый аргумент» после определенного количества коммитов. Затем синхронизация снова вернется к началу.

Я считаю, что это ошибка в Msysgit, связанная с большими (ish) двоичными файлами и доступной памятью (в системе Win XP SP3 с 4 ГБ ОЗУ и большим количеством свободного места на жестком диске). Удаленная система представляла собой репозиторий DotNetNuke SVN на CodePlex (https://dotnetnuke.svn.codeplex.com/svn).

Первоначально он подавлялся файлом «CHM» 330 КБ (~ 212-я фиксация, r52261). Он постоянно делал это, даже после отключения Avast AV, Google Desktop и т. Д. И проверки отсутствия других процессов с блокировками в папке репо. После перезагрузки (но при открытии Outlook, Dreamweaver и т. Д.) Он постоянно и неоднократно выходил из строя на ~ 15.3 МБ DLL (~ 416-я фиксация, та же ревизия).

Наконец, после очередной перезагрузки, отключения Avast, Carbonite и Google Desktop и отсутствия других программ синхронизация сработала в первый раз.

Это, кажется, твердо указывает на мой вывод о том, что это была проблема с доступной памятью, вероятно, связанная с наличием большого двоичного кода и большим количеством коммитов в ревизии. Обратите внимание, что я также безуспешно пробовал «git fsck», «git svn reset xx» и настраивал переменные конфигурации «packSizeLimit» / «usedeltabaseoffset».

Чад — возможно, у вас была такая же проблема, и помогла перезагрузка, а не обновление.

  • Печать

Страницы: [1]   Вниз

Тема: Нету режима работы процессора ondemand  (Прочитано 1023 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
stlu

Здраствуйте,я новичок в линукс и меня интересуют несколько вопросов:

sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governorsпри вводе этой команды пишет что есть только 2 доступные режимы: performance и powersave,а я хочу поставить ondemand. Процессор вроде не старый (если от этого что-то зависит) intel core i5 9300H стоит ubuntu 18.04 LTS. При попытке этим способом допустим

for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f $CPUFREQ ] || continue; echo -n ondemand > $CPUFREQ; done
выдает bash: echo: ошибка записи: Недопустимый аргумент.
Возможно ли как-то установить самому этот режым? Или изменить ничего уже нельзя?
Буду благодарен за любую помощь.


Оффлайн
ALiEN175

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor?

ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE


Оффлайн
stlu


Оффлайн
The Green Side

Не смогу ответить на вопрос, но могу предложить обойти проблему.

gamemode

— утилита для изменения режима работы процессора в полуавтоматическом режиме. После установки модифицируете .desktop файл любого приложения таким образом:

Exec=gamemoderun steamпредварительно скопировав его в

.local/share/applications

И указанное приложение теперь активирует режим performance
При закрытии приложения режим powersave возвращается

Debian 11, Debian 11 Server


Оффлайн
andytux

есть только 2 доступные режимы: performance и powersave

Значит только эти режимы есть у твоего процессора.
Посмотрел у себя: conservative ondemand userspace powersave performance schedutil. Выбран: ondemand.
lubuntu 18.04.

Возможно ли как-то установить самому этот режым? Или изменить ничего уже нельзя?

Нет. Нельзя.

« Последнее редактирование: 01 Февраля 2020, 07:26:57 от andytux »


Оффлайн
xArtem1991x

Попробовал на KDE neon выполнить команду
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Пишет — Нет такого файла или каталога


Оффлайн
andytux

xArtem1991x, скопировал твою команду, вставил, выполнил. Запросила пароль, вывела список.
Как минимум, в команде нет ошибок. Как вариант, посмотри глазами, что там у тебя есть.


Оффлайн
Pilot6

у свежих интелов нет ondemand, вы читаете старые инструкции. Сейчас используется intel psave. Там всего два варианта. И работает он лучше. Можно забубенить даже на новом железе старорежимный драйвер, можете попробовать найти в сети как это делается. Только непонятно зачем это нужно. По умолчанию стоит powersave, он во всех отношениях лучше ondemand.

Я в личке не консультирую. Вопросы задавайте на форуме.


Оффлайн
ALiEN175

ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE


Оффлайн
Pilot6

Посмотрел у себя: conservative ondemand userspace powersave performance schedutil. Выбран: ondemand.

У вас cpu небось не интел.

Я в личке не консультирую. Вопросы задавайте на форуме.


Оффлайн
andytux

У вас cpu небось не интел.

Интел, очень древний. SpeedStep тогда только появился.


Оффлайн
Pilot6

Интел, очень древний.

Если проц не поддерживает pstate — тогда нормально. У меня на amd тоже ondemand есть.

Я в личке не консультирую. Вопросы задавайте на форуме.


  • Печать

Страницы: [1]   Вверх

#linux #linux-kernel #ubuntu-16.04 #sysfs #nvme

#linux #linux-ядро #ubuntu-16.04 #sysfs #nvme

Вопрос:

Комментарии:

1. Похоже, что это вопрос использования , а не разработки . Вероятно, вам следует ознакомиться с документацией или, если подходить к этому с точки зрения разработчика, найти и прочитать код, который генерирует эту ошибку, и попытаться выяснить, означает ли это, что вы запрашиваете неправильный способ, или что вы запрашиваете что-то, что не поддерживается.

2. Команда работает на других компьютерах, использующих ядро 4.15. Использование правильное, как также упоминается в ссылках.

3. Это не означает, что он будет работать с этим конкретным оборудованием или его драйверами.

Ответ №1:

Нихил отправил сообщение «Ошибка при включении io_poll для NVMe SSD» в список рассылки Linux block и получил ответ от Кита Буша:

Обязательно включите очереди опроса в драйвере nvme. По умолчанию их нет. Параметр ядра, который [так в оригинале] их разрешает, равен:

 nvme.poll_queues=X
  

Где ‘X’ — количество очередей опроса. Я бы рекомендовал как минимум 1 на
Сокет процессора, но чем больше, тем лучше.

Судя по ответу Нихила, кажется, что после внесения вышеуказанных изменений оно io_poll могло быть установлено равным 1.

Для контекста, просматривая исходный код ядра, вы можете в ядре 5.0 появилась poll_queues опция NVMe (на это также упоминается в разделе хранилища журнала изменений ядра для новичков 5.0). Кроме того, для фиксации 5.0 по умолчанию poll_queues установлено значение 0 (на момент написания в конце 2019 года мы в настоящее время достигли 5.5-rc2, и это все еще так).

Кроме того, похоже, что Фрэнк Обер (который опубликовал ответ на этот вопрос как @FrankO) спросил «почему было внесено изменение» в ветке списка рассылки «Опрошенный ввод-вывод для Linux kernel 5.x» Linux block, а также получил ответ от Кита:

Исходная реализация опроса совместно использовала ресурсы, которые генерируют прерывания. Это не позволяет ему работать с максимальной скоростью, поэтому теперь используются выделенные очереди опроса.

Ответ №2:

Этот блог, на который вы ссылаетесь, родился во времена ядер 4.x, с тех пор концепции ввода-вывода io_uring появились во временных рамках ядра 5.x.

Пожалуйста, прочтите этот документ о io_uring:https://kernel.dk/io_uring.pdf

Вы должны протестировать накопитель Optane media с помощью: ioengine=io_uring

С hipri или без него, если вы хотите использовать bio_poll или нет.

Вот что должно сработать при передаче в fio:

 [global]
direct=1
filename=/dev/nvme1n1
log_avg_msec=500
time_based
percentile_list=1:5:10:20:30:40:50:60:70:80:90:95:99:99.5:99.9:99.95:99.99:99.999:99.9999


[rand-read-4k-qd1]
runtime=120
bs=4K
iodepth=1
numjobs=1
cpus_allowed=0
ioengine=io_uring
hipri
rw=randread
  

uname -a
5.4.1-1.el8.elrepo.x86_64

CentOS 8

Удачи, Фрэнк Обер

  • Ошибка записи не удалось установить перехватчик отключите uac
  • Ошибка записи начните сначала запись экрана
  • Ошибка записи начните сначала xiaomi
  • Ошибка записи начните сначала redmi note 7
  • Ошибка записи на целевое устройство неверный адрес управляющего блока памяти ос роса