linux为什么推荐关闭透明大页?
时间: 2023-07-10 16:27:21 浏览: 187
Linux 推荐关闭透明大页是因为透明大页对于多数工作负载来说并没有显著的性能提升,而且会增加内存管理的复杂度。当启用透明大页时,内核需要定期扫描内存页面,以判断哪些页面可以合并成大页,这会增加 CPU 和内存的负担,并且可能会导致一些性能问题。此外,透明大页还可能会导致一些应用程序出现稳定性问题。
因此,关闭透明大页可以提高系统的稳定性和可靠性,尤其是在一些对性能要求不是非常高的场景下。不过,在某些高性能计算场景下,透明大页可能会带来一些性能提升,此时可以根据具体情况来选择是否启用透明大页。
相关问题
怎么关闭透明大页?
如果您想在 Linux 系统上关闭透明大页,可以按照以下步骤进行操作:
1. 查看透明大页的状态,可以使用以下命令:
```
cat /sys/kernel/mm/transparent_hugepage/enabled
```
如果输出结果为`[always] madvise never`或`always [madvise] never`,则表示透明大页已经启用;如果输出结果为`never`,则表示透明大页已经关闭。
2. 临时关闭透明大页,可以使用以下命令:
```
echo never > /sys/kernel/mm/transparent_hugepage/enabled
```
这个命令将透明大页的状态设置为`never`,表示关闭透明大页。注意,这个设置只在当前会话中有效,系统重启后透明大页将会重新启用。
3. 永久关闭透明大页,可以编辑`/etc/rc.local`文件,在文件末尾添加以下命令:
```
echo never > /sys/kernel/mm/transparent_hugepage/enabled
```
这个命令将在系统启动时自动执行,从而实现透明大页的永久关闭。
完成以上操作后,透明大页就被关闭了。如果您需要重新启用透明大页,可以将上述命令中的`never`改为`always`即可。
linux qt 透明窗口覆盖
在Linux环境下使用Qt创建透明窗口并使其能够覆盖其他窗口,通常涉及以下几个步骤:
1. **包含所需的库**:在你的Qt项目中,首先需要包含`QWindow`和`Qt::TranslucentWindowHint`。这两个库允许你创建半透明和完全透明的窗口。
```cpp
#include <QApplication>
#include <QWidget>
#include <QMainWindow>
#include <QWindow>
#include <QtWidgets/QStyle>
```
2. **设置窗口属性**:当你创建窗口时,添加`Qt::WindowFlags`标志来指定窗口应该具有透明背景:
```cpp
QMainWindow* mainWindow = new QMainWindow();
mainWindow->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::Window | Qt::Tool | Qt::TranslucentWindowHint);
```
这里使用了`Qt::FramelessWindowHint`去除边框,`Qt::WindowStaysOnTopHint`使窗口保持在所有其他窗口之上,`Qt::Tool`模式可以让窗口在鼠标按下时不被最小化或关闭。
3. **实现窗口绘制**:为了使窗口内容透明,你需要重写`paintEvent()`函数,并使用`QPainter`来设置背景颜色和不透明度。例如:
```cpp
void MainWindow::paintEvent(QPaintEvent* event) {
QWidget::paintEvent(event);
QPainter painter(this);
QRegion region;
painter.setRenderHint(QPainter::Antialiasing);
painter.fillRect(region, QColor(0, 0, 0, 128)); // 设置50%的透明度
}
```
4. **显示窗口**:最后,显示你的窗口:
```cpp
mainWindow->show();
```
阅读全文