我可能会遗漏某些东西或者可能没有,但是setrlimit当在valgrind下运行时,函数会一直失败
int main()
{
const struct rlimit file_limits = { .rlim_cur = 65536, .rlim_max = 65536 };
if ( setrlimit( RLIMIT_NOFILE, &file_limits ) )
{
printf(" Failed %d", errno );
perror(" More " );
}
else
{
printf(" Success ");
}
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
正常运行
sh-4.2# ulimit -H -n
800000
sh-4.2# ulimit -S -n
500000
sh-4.2# ./rlimit
Success
sh-4.2#
Run Code Online (Sandbox Code Playgroud)
在valgrind
sh-4.2#
sh-4.2# valgrind ./rlimit
==28974== Memcheck, a memory error detector
==28974== Copyright (C) 2002-2015, and GNU …Run Code Online (Sandbox Code Playgroud) 这似乎问题是重复此.但我的问题是我已经通过两种方式在JavaFX中开发了一个整数文本字段.代码如下
public class FXNDigitsField extends TextField
{
private long m_digit;
public FXNDigitsField()
{
super();
}
public FXNDigitsField(long number)
{
super();
this.m_digit = number;
onInitialization();
}
private void onInitialization()
{
setText(Long.toString(this.m_digit));
}
@Override
public void replaceText(int startIndex, int endIndex, String text)
{
if (text.matches(Constants.DIGITS_PATTERN) || text.equals(Constants.EMPTY_STRING)) {
super.replaceText(startIndex, endIndex, text);
}
}
@Override
public void replaceSelection(String text)
{
if (text.matches(Constants.DIGITS_PATTERN) || text.equals(Constants.EMPTY_STRING)) {
super.replaceSelection(text);
}
}
}
Run Code Online (Sandbox Code Playgroud)
第二种方法是添加一个事件Filter.
给出了代码片段.
// restrict key input to numerals.
this.addEventFilter(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>() { …Run Code Online (Sandbox Code Playgroud) 考虑这里的代码片段,我试图创建一堆线程,最终处理模拟竞争条件的给定任务.
const int thread_count = 128;
pthread_t threads[thread_count];
for (int n = 0; n != thread_count; ++n)
{
ret = pthread_create(&threads[n], 0, test_thread_fun, &test_thread_args);
if( ret != 0 )
{
fprintf( stdout, "Fail %d %d", ret, errno );
exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
事情通常很好,除了偶尔pthread_create失败与errno EAGAIN"资源暂时不可用",我尝试诱导usleep,并重试创建但没有实际效果.
失败是零星的,在某些方面没有失败,有些则经常发生.
任何想法这里可能出错?
编辑 - 1
更新max-threads
cat /proc/sys/kernel/threads-max
256467
Run Code Online (Sandbox Code Playgroud)
编辑2
我认为这里的输入让我思考,我可能会在下面做,并发布任何值得分享的结果.
我有一个价值几 TB ( 5 TBs)的大磁盘,我需要将这个磁盘空间填满大约95%,这是一个linux centos盒子。
我试过 dd
dd if=/dev/zero of=o_File1.img bs=209715200 count=1000
Run Code Online (Sandbox Code Playgroud)
甚至尝试像这样循环运行
#!/bin/bash
count_=0
parallel_=10
BS=2097152000
COUNT=100
while [ $count_ -lt $parallel_ ]
do
file="Dummy_DD_BS_"$BS"_$(date +%Y%M%d%H%m%s)_$count_.img"
echo $file
`dd if=/dev/zero of=$file bs=$BS count=$COUNT > /dev/null 2>&1 &`
count_=$((count_+1))
done
Run Code Online (Sandbox Code Playgroud)
但是 5 TB 似乎很多。
有没有更快的方法,我可以使用任何脚本 python/perl/bash 或任何东西,我正在寻找一个快速优化的解决方案
编辑:
好的,所以遵循在linux 系统上快速创建大文件 并没有真正解决任何问题
情况1 :
dd
time dd if=/dev/zero of=filename10 bs=1G count=10
10+0 records in
10+0 records out
10737418240 bytes (11 GB) copied, 34.0468 s, …Run Code Online (Sandbox Code Playgroud)