Описание тега rcu
Чтение-Копирование-Обновление - это механизм синхронизации, позволяющий читать одновременно с обновлениями. Он поддерживает несколько версий объектов и гарантирует, что они не будут освобождены, пока не будут завершены все существующие критические разделы на стороне чтения. Поскольку запись в выровненный указатель является атомарной, мы можем атомарно вставлять, удалять, заменять элементы данных в связанной структуре, не нарушая работу читателей. После этого одновременные читатели могут продолжить доступ к старой версии, новые читатели увидят обновленную версию.
1
ответ
Полезно ли rcu, когда все потоки являются потенциальными программами обновления?
Мой вопрос на самом деле специфичен для реализации Linux в списке rcu. Мне нужно удерживать спин-блокировку для любых критических разделов, которые читают из списка и обновляют (скажем, удаляют эту запись), потому что версия rcu, которую он видит по…
26 июн '13 в 22:55
0
ответов
RCU как альтернатива обычной уборке мусора
Read-Copy-Update (RCU) - это метод ручного управления памятью, который становится все более популярным в ядре Linux. Можно ли спроектировать язык и виртуальную машину, которые используют RCU вместо обычного сборщика мусора для восстановления недосту…
02 июл '13 в 22:56
0
ответов
Почему `synchronize_rcu()` не блокируется при вызове внутри блока блокировки чтения?
synchronize_rcu() используется для ожидания только завершения текущих критических секций на стороне чтения RCU. Если это так, он должен быть заблокирован навсегда при вызове внутри блока чтения. Тем не менее, следующий код хорошо работает на моем яд…
18 авг '18 в 07:41
1
ответ
Идея реализации Lock Free stack - в настоящее время не работает
У меня возникла идея, которую я пытаюсь реализовать для стека без блокировки, который не использует подсчет ссылок для решения проблемы ABA, а также правильно обрабатывает восстановление памяти. По своей концепции он похож на RCU и опирается на две …
11 июн '18 в 17:54
1
ответ
Существует ли заголовок linux для хэш-таблицы с корзинами, защищенными от спин-блокировки?
Я пишу код, который редко создает / удаляет объекты (до нескольких тысяч), но очень часто модифицирует их в контексте мягкого IRQ. Эти объекты также редко читаются (и, вероятно, также редко изменяются) из контекста задачи (через procfs: файл на объе…
13 янв '17 в 08:52
0
ответов
spin_lock_irqsave и разместить внутри rcu_read_lock
Привет, У меня есть код драйвера, который должен работать с определенными пакетами, полученными через интерфейс. Драйвер использует spin_lock_irqsave для параллельного управления такими запросами перед передачей его аппаратному обеспечению. Для раб…
17 мар '14 в 17:00
1
ответ
Механизм публикации-подписки и критический раздел на стороне чтения в блокировке RCU
Вопрос 1: В статье о введении блокировки RCU он пишет механизм публикации-подписки. Но у меня есть вопрос о rcu_assign_pointer(), в этой статье он сказал: 1 p->a = 1; 2 p->b = 2; 3 p->c = 3; 4 rcu_assign_pointer(gp, p); Rcu_assign_pointer()…
12 мар '14 в 06:01
1
ответ
Безопасно ли использовать rcu_dereference() внутри local_bh_disable()/local_bh_enable()?
local_bh_disable-функция меняется для каждого процессора (в случае с x86 и последними ядрами) __preempt_count или же current_thread_info()->preempt_count иначе. В любом случае, это дает нам льготный период, поэтому мы можем предположить, что это …
08 июл '18 в 23:25
3
ответа
Нужно ли вызывать rcu_read_lock в контексте softirq
Реализация rcu_read_lock - отключение preempt и барьера. И контекст softirq не будет вытеснен. Поэтому необходимо ли вызывать rcu_read_lock в контексте softirq. Важен ли барьер?
22 янв '14 в 16:04
1
ответ
BI-приложения на сменной базе данных 12c
Кто-нибудь запускает приложения BI на подключаемой базе данных 12c? Я сталкиваюсь с некоторыми проблемами при установке RCU, когда он пытается импортировать файлы.dmp для создания схем в подключаемой базе данных. У нас есть приложения BI, работающие…
10 ноя '15 в 17:31
1
ответ
Защита нескольких списков с помощью rcu
Привет, Я новичок в механизм блокировки rcu в ядре Linux. Пытаясь понять, как работает rcu и предоставляемые API, я вижу, что rcu_read_lock(), rcu_synchronize() не принимает ни одного экземпляра блокировки. Итак, допустим, у меня есть n независимых …
17 мар '14 в 17:39
1
ответ
Для Linux RCU, в течение льготного периода, возможно ли, чтобы новый писатель обновил новые данные?
Я новичок в Linux и изучаю раздел RCU. Я видел, что есть льготный период во время операции. Просто хочу знать, хочет ли какой-нибудь новый писатель обновить данные в течение льготного периода, возможно ли это? Я думаю, что есть два пути: В течение л…
02 авг '17 в 02:29
1
ответ
Устранение адреса ядра путем очистки старших бит?
Есть ли какой-то механизм в Linux, который отравляет адреса, обнуляя старшие 16 бит? Я отлаживаю сбой ядра на машине Intel x86-64. Инструкция, которая вызывает сбой, пытается получить доступ к адресу 0x880139f3da00: crash> bt R10: 000000000000000…
06 июл '17 в 17:45
0
ответов
Может ли функция smp_wmb() предотвратить переупорядочивание инструкций компилятором и процессором?
Коды есть: static inline void __list_add_rcu(struct list_head * new, struct list_head * prev, struct list_head * next) { new->next = next; new->prev = prev; smp_wmb(); next->prev = new; prev->next = new; } #define smp_wmb() wmb() #ifdef …
03 ноя '13 в 07:07
0
ответов
Установка Weblogic 12c ohs без вывода сообщений
Я пытаюсь автоматизировать процесс установки Weblogic OHS через PowerShell. В качестве обязательного условия для Fusion Middleware необходимо выполнить настройку RCU и перенастройку домена с помощью em и jrf. При настройке домена мы сталкиваемся с о…
18 янв '18 в 07:20
1
ответ
Можно ли читать старую или новую версию в замке RCU?
У меня есть вопрос по поводу блокировки RCU. Насколько я знаю, RCU позволяет некоторым читателям (которые начались до льготного периода и заканчивается в льготном периоде) иметь либо старую версию, либо новую версию. Посмотрите прикрепленное изображ…
20 апр '17 в 07:19
1
ответ
Почему ядро функционирует:get_next_corpse увеличивает счетчик после обнаружения nf_conn?
Я читаю исходный код ядра и пытаюсь понять механизм ip conntrack. Как понять функцию get_next_corpse, которая увеличивает счетчик структуры nf_conn, которая считается очищенной. static struct nf_conn * get_next_corpse(struct net *net, int (*iter)(st…
08 мар '18 в 05:41
1
ответ
ORA-12528, TNS: слушатель: все соответствующие экземпляры блокируют новые соединения
Привет, когда пытаюсь создать Утилиту Создания Репозитория с помощью Data Connection, данные не исключаются. Это выдает Исключение Listener refused the connection with the following error: ORA-12528, TNS:listener: all appropriate instances are block…
12 апр '14 в 05:41
0
ответов
Добавление и поиск узла rcu из списка rcu
Я пытаюсь добавить rcu узел в rcu_list вызывая функцию, hlist_add_head_rcu, с rcu_list собственный замок и spin_lock, После этого мне нужно проверить, rcu узел находится в ожидании назначения в rcu_list перед вызовом функции возврата reclaimer. Есть…
13 авг '18 в 02:07
1
ответ
Почему list_add_rcu защищает только "prev->next"?
Ниже приводится реализация __list_add_rcu в include / linux / rculist.h: static inline void __list_add_rcu(struct list_head *new, struct list_head *prev, struct list_head *next) { new->next = next; new->prev = prev; rcu_assign_pointer(list_nex…
11 ноя '15 в 19:33