问题标签 [rcu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
799 浏览

oracle - Weblogic 脚本工具 beginRepositorySession() 失败

我正在尝试使用 oracle 的 OWSM 来保护我的应用程序。我有脚本来创建策略和身份验证器。当我尝试运行这些脚本时,它在第一行失败,即

我收到以下错误:

经过一些链接后,我发现当我尝试从错误的位置执行 wlst.sh 时会发生此错误。但我正在从 Oracle_common 执行它,但我仍然收到此错误。

任何想法..为什么会发生这种情况?这是一些设置问题吗?或者我需要在执行此beginRepositorySession之前添加一些代码?

我的 wlst.sh 位置是

谢谢你。

完整的异常跟踪:

0 投票
1 回答
144 浏览

linux - 我应该如何混合 RCU 阅读器和更新程序代码?

我有一个样板函数,可以在树状数据库中找到一个结构:

然后我有几个函数可以处理这个结果:

然后我有一个更新器/回收器。它需要像“a”函数一样找到对象(假设它已经从外部互斥):

我的问题是,rcu_dereference()的文档说它必须从读取端关键部分(即在rcu_read_lock()和之间rcu_read_unlock())中调用。c()调用 . 违反了此规则find_foo()

我很犹豫要不要制作一个全新的版本,find_foo()它使用rcu_dereference_protected()而不是rcu_dereference(),因为它有太多重复的代码,所以我想知道这个实现c()是否合法:

如果这不合法,我应该如何混合阅读器和更新程序代码?

0 投票
1 回答
493 浏览

c - hlist_for_each_entry_rcu 是否需要将额外的指针传递给它?

LWN在 RCU 上给出了以下示例:

订阅受 RCU 保护的 hlist 也类似于循环列表:

快速测验 3:当 list_for_each_entry_rcu() 只需要一个指针时,为什么我们需要将两个指针传递给 hlist_for_each_entry_rcu()?

回答: 因为在 hlist 中需要检查 NULL 而不是遇到头部。(尝试编写一个单指针 hlist_for_each_entry_rcu()。如果你想出了一个很好的解决方案,那将是一件非常好的事情!)


我认为它必须引用旧版本的 hlist_for_each_entry_rcu() 因为当前版本(3.13.0)在rculist.h标题中实际上提出了hlist_for_each_entry_rcu采用 3 个参数的定义,因此不需要额外的第 4 个指针并且似乎并不难发明:

我是否遗漏了当前 rculist.h 中给出的某些内容或更高版本是一件非常好的事情

我们可以看到在__rcu_dereference_check创建附加指针的地方发生了一些微妙的事情:

0 投票
2 回答
797 浏览

c - 如何保护 RCU 阅读器部分免受抢占?

(来自关于LWN的文章)

RCU 更新操作将执行 synchronize_rcu() 以断言每个 CPU 切换了上下文,因此每个 RCU-reader 都完成了它的工作。但是 RCU 必须依赖于 reader 不被抢占。事实上,LWN 接下来说:

尽管这种简单的方法适用于跨 RCU 读取端临界区禁用抢占的内核,换句话说,对于非 CONFIG_PREEMPT 和 CONFIG_PREEMPT 内核,它不适用于 CONFIG_PREEMPT_RT 实时 (-rt) 内核。

我知道非 CONFIG_PREEMPT 内核禁用了抢占,但为什么CONFIG_PREEMPT内核也可以?

0 投票
1 回答
114 浏览

linux-kernel - What should I do with nonexistent _bh RCU functions?

There are many RCU functions that don't have a _bh counterpart.

Examples are:

  • list_entry_rcu()
  • list_for_each_entry_rcu()

Is this because...

  1. they can be called from bottom halves just fine (think list_empty() vs list_empty_rcu())?
    • Does this mean I can use rcu_read_lock() and rcu_read_lock_bh() interchangeably in these cases?
  2. no one has so far needed them (and therefore I's supposed to roll out my own version of them)?

Rule 9 of the RCU checklist says "in which case the matching rcu_dereference() primitive must be used in order to keep lockdep happy". So I guess the second option above is true. But then I find code that reads like this:

And then, during __clusterip_config_find():

What is going on!? list_for_each_entry_rcu() uses rcu_dereference_check(), not rcu_dereference_bh_check()...

0 投票
1 回答
353 浏览

database - 12c 可插拔数据库上的 BI 应用程序

有人在 12c 可插拔数据库上运行 BI 应用程序吗?当 RCU 尝试导入 .dmp 文件以在可插入数据库上创建模式时,我遇到了一些安装问题。

我们在另一个环境中的 12c 上运行 BI 应用程序,但数据库没有设置为容器数据库。

我只是想知道是否有人已经完成了能够在可插拔数据库上运行 BI 应用程序的安装过程并且没有任何后续问题。

0 投票
1 回答
277 浏览

linux-kernel - 为什么 list_add_rcu 只保护“prev->next”?

以下是include/linux/rculist.h__list_add_rcu中的实现:

在函数体内,rcu-lock保护 的更新prev->next,但不保护next->prev。为什么?我在这里错过了什么明显的东西吗?

0 投票
1 回答
2218 浏览

linux - rcu_dereference() 与 rcu_dereference_protected()?

rcu_dereference()谁能解释和有什么区别rcu_dereference_protected()

rcu_dereference()包含屏障代码并且rcu_dereference_protected()不包含。

何时使用rcu_dereference(),何时使用rcu_dereference_protected()

0 投票
1 回答
1097 浏览

c - Linux RCU 和双链表

我正在阅读有关Read-copy-update (RCU) 的信息。我不确定在 SMP 的情况下我是否理解正确。据我所知,RCU 确保 Update 以原子方式执行。例如,在单链表的情况下,很明显可以在一次操作中完成旧元素与新元素的交换,因为它是通过更改指针来完成的。但是在双向链表的情况下,如何保证 RCU 仍然会被原子执行呢?有两个指针指向给定的元素(下一个和上一个),因此对该元素的每次更改都需要更改这两个指针。如何确保更改这两个指针将作为原子操作完成?它是如何在 Linux 中完成的?

0 投票
1 回答
735 浏览

linux-kernel - 是否有带有自旋锁保护桶的哈希表的 linux 标头?

我编写的代码很少创建/删除对象(最多数千个),但在软 IRQ 上下文中非常频繁地修改它们。这些对象也很少从任务上下文中读取(并且可能也很少被修改)(通过 procfs:每个对象的文件)。目前我的代码包含全局的 per-CPU 数据块,每个数据块都由一个自旋锁保护。这样的块包含用于对象存储的固定大小的哈希表。

显然,当前的设计不是最优的,尤其是在对象更新负载非常高的情况下:从 procfs 读取对象会导致更新软 IRQ 时数据丢失。我需要重写同步方案以摆脱全局锁。最明显的选择 - 为每个哈希表存储桶设置一个自旋锁 - 它应该可以很好地扩展。问题是我可能需要使用我自己的哈希表实现,或者至少重新实现几个顶级宏(在 linux/hashtable.h 中没有找到那些用于自旋锁保护的存储桶)。我是否也应该考虑启用 RCU 的哈希表(但我对这种同步方法没有深入的了解)?