Articles of 同步

MySQL数据库挂起由于磁盘日记?

有时我们的Linux MySQL数据库服务器中的一个会挂起一段时间,创build一个长队列的活动查询。 10-20分钟后,服务恢复正常。 这发生在kern.log中: May 14 13:58:05 edu02 kernel: [2375521.716786] INFO: task jbd2/md2-8:1419 blocked for more than 120 seconds. May 14 13:58:05 edu02 kernel: [2375521.716870] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. May 14 13:58:05 edu02 kernel: [2375521.716953] jbd2/md2-8 D ffff88043b5a23f0 0 1419 2 0x00000000 May 14 13:58:05 edu02 kernel: [2375521.716958] ffff88043b5a23f0 0000000000000046 00000000000000ff ffff88043b4e69c0 […]

Inotify可以处理大量的目录吗?

有没有人用inotify看500K – 1M的目录? 如此大量的手表性能如何? 我正在考虑创build一个跟踪某些站点上的文件更改的服务器。 服务器将用PHP或nodejs编写 。 在我开始之前,我想知道inotify是否是这个任务的正确工具。 我可以增加手表的最大数量: fs.inotify.max_user_watches=1000000 但接下来呢? 可以通过处理吗?

我们是否确实需要与“PTHREAD_MUTEX_ROBUST”相反的属性“PTHREAD_MUTEX_STALLED”的互斥锁?

我正在阅读APUE第12章(第三版),它说:我们可以设置PTHREAD_MUTEX_STALLED或PTHREAD_MUTEX_ROBUST到互斥量。 但是我不认为我们需要使用属性PTHREAD_MUTEX_STALLED互斥,互斥量应该总是“健壮的”,这样我们才能被通知,如果locking互斥量的那一边是死的。 如果互斥体“停滞”,我们将永远悬浮。 而且我知道Windows的互斥体总是“健壮”,如果locking互斥体的那一面死了,我们将会收到错误WAIT_ABANDONED通知。 那么,在什么样的情况下,我们不得不使用“停滞”的互斥体,而不是“健壮的”互斥体呢? 感谢您的关注。

raw_spinlock是什么意思?

我正在研究/usr/src/linux/include/linux/spinlock_types.h的raw_spinlock结构: typedef struct raw_spinlock { arch_spinlock_t raw_lock; #ifdef CONFIG_GENERIC_LOCKBREAK unsigned int break_lock; #endif #ifdef CONFIG_DEBUG_SPINLOCK unsigned int magic, owner_cpu; void *owner; #endif #ifdef CONFIG_DEBUG_LOCK_ALLOC struct lockdep_map dep_map; #endif } raw_spinlock_t; 我认为raw_lock是一个依赖于架构的锁, dep_map是一种避免死锁的数据结构,但是break_lock , magic , owner_cpu和*owner是什么意思?

基于互斥体的locking机制

有人可以告诉我一个基于futex的locking机制的例子吗? (对于x86 CPU,CentOS)

计算机之间的Linux文件同步

我正在寻找一个软件,这将允许我在Linux机箱之间的specyfic文件夹中同步文件。 我search了很多话题,而我发现的是Unison。 它看起来不错,但它不在发展中,不允许我看到文件更改历史logging。 所以问题是什么是最好的Linux文件同步器,即: (必填)将只同步选定的文件夹 (必需)将在给定的时间同步计算机(例如每小时) (必填)将是智能的 – 将记住什么被删除,什么时候会问我是否也想在远程机器上删除它。 (可选)将跟踪更改并允许查看更改的历史logging (可选)将是多平台的

Bash脚本:保持一行本地文件与远程文件同步

我search了高低,但似乎无法find解决这个问题(也许它不存在?)。 这是我的问题: 我的本地机器上有一个名为myFile.txt的文件。 在远程计算机上有一个相同名称的文件(myFile.txt)。 两个文件结构都是这样的: <tag1>November 22, 2012<tag1> <tag2>version5.8<tag2> <tag3>ASDFA23RASDF29ASDJ29DJ2<tag3> 两个文件都有完全相同的布局。 我需要编写一个脚本,使两个文件(本地和远程)的<tag3>之间的string保持同步。 我需要从远程服务器上的<tag3>获取string,并将其与本地计算机上的相同string进行比较。 如果有区别,我需要改变我的本地string,以反映远程的。 到目前为止,我已经尝试过了:我使用awk抓取了本地string,并将其分配给一个variables。 很简单。 我ssh'ed到远程服务器,并试图使用相同的方法来分配远程string到一个variables。 据我所知,这似乎是工作。 问题是variables不会返回到我的本地机器的值(如果这是有道理的)。 这是我试图做到这一点: #!/bin/bash fileName="myFile.txt" logon="myUserName@remoteServer.com" localString=$(awk -F "<tag3>" '{print $2}' $fileName) x=$(ssh $logon "remoteString=$(awk -F "<tag3>" '{print $2}' $fileName); echo $remoteString") echo "remote string = $x" if [ $localString == $x ]; then echo "The 2 auth […]

使用sigev_notify = SIGEV_THREAD_ID方法的POSIX计时器

在multithreading场景中,我试图实现一个POSIX计时器,在计时器到期时,应该唤醒同一进程的下一个线程(一次只有一个线程正在运行,而其他所有线程都处于阻塞状态)。 在计时器中,我使用sigev_notify = SIGEV_THREAD_ID既不希望任何处理程序服务的信号,也不想在计时器到期后创build一个新的线程。 //Import #define _GNU_SOURCE #define _POSIX_C_SOURCE 199309 #include <sched.h> #include <unistd.h> #include <sys/wait.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <signal.h> #include <errno.h> #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> #include <syscall.h> #define NUM_THREADS 10 #define CLOCKID CLOCK_REALTIME int ret; //pthread_cond_t condA[NUM_THREADS+1] = PTHREAD_COND_INITIALIZER; pthread_cond_t condA = PTHREAD_COND_INITIALIZER; pthread_mutex_t mutex = […]

错误地写入同步进程的文件输出顺序?

我有以下问题。 我有两个正在与信号量同步的进程,这个想法是这样的: 进程1向txt文件写入内容 进程2写入一些txt文件 进程1写入testing文件 我已经包含了这个示例代码来演示这个问题: // semaphore names #define NAME1 "/s1" #define NAME2 "/s2" int main() { /* semaphores for process synchronization */ sem_t *sm1; sm1 = sem_open( NAME1, O_CREAT, 0666, 0); sem_t *sm2; sm2 = sem_open(NAME2, O_CREAT, 0666, 0); /* processes*/ int proc1; int proc2; /* file lock struct */ struct flock fl […]

“同步I / O”是否意味着“阻塞I / O”?

我只是混淆了“同步/asynchronousI / O”和“阻塞/非阻塞I / O”。 我认为“同步I / O”总是意味着某种阻塞I / O像读/写,它们阻塞操作,所以它们是“同步I / O”。 请帮忙纠正!