disk,
file,
thread,
+ throttle,
time;
MagickSizeType
disk_limit,
file_limit,
thread_limit,
+ throttle_limit,
time_limit;
} ResourceInfo;
\f
MagickFalse,resource_limit);
break;
}
+ case ThrottleResource:
+ {
+ limit=resource_info.throttle_limit;
+ status=(resource_info.throttle_limit == MagickResourceInfinity) ||
+ ((MagickSizeType) resource_info.throttle < limit) ?
+ MagickTrue : MagickFalse;
+ (void) FormatMagickSize((MagickSizeType) resource_info.throttle,
+ MagickFalse,resource_current);
+ (void) FormatMagickSize((MagickSizeType) resource_info.throttle_limit,
+ MagickFalse,resource_limit);
+ break;
+ }
case TimeResource:
{
resource_info.time+=size;
resource=(MagickSizeType) resource_info.thread;
break;
}
+ case ThrottleResource:
+ {
+ resource=(MagickSizeType) resource_info.throttle;
+ break;
+ }
case TimeResource:
{
resource=(MagickSizeType) resource_info.time;
resource=resource_info.thread_limit;
break;
}
+ case ThrottleResource:
+ {
+ resource=resource_info.throttle_limit;
+ break;
+ }
case TimeResource:
{
resource=resource_info.time_limit;
if (resource_info.time_limit != MagickResourceInfinity)
(void) FormatLocaleString(time_limit,MaxTextExtent,"%.20g",(double)
((MagickOffsetType) resource_info.time_limit));
- (void) FormatLocaleFile(file," File Area Memory Map"
- " Disk Thread Time\n");
+ (void) FormatLocaleFile(file," File Area Memory Map"
+ " Disk Thread Throttle Time\n");
(void) FormatLocaleFile(file,
"--------------------------------------------------------"
- "-----------------------\n");
- (void) FormatLocaleFile(file,"%6g %10s %10s %10s %10s %6g %11s\n",
+ "------------------------\n");
+ (void) FormatLocaleFile(file,"%6g %10s %10s %10s %10s %8g %8g %10s\n",
(double) ((MagickOffsetType) resource_info.file_limit),area_limit,
memory_limit,map_limit,disk_limit,(double) ((MagickOffsetType)
- resource_info.thread_limit),time_limit);
+ resource_info.thread_limit),(double) ((MagickOffsetType)
+ resource_info.throttle_limit),time_limit);
(void) fflush(file);
UnlockSemaphoreInfo(resource_semaphore);
return(MagickTrue);
MagickFalse,resource_limit);
break;
}
+ case ThrottleResource:
+ {
+ (void) FormatMagickSize((MagickSizeType) resource_info.throttle,
+ MagickFalse,resource_current);
+ (void) FormatMagickSize((MagickSizeType) resource_info.throttle_limit,
+ MagickFalse,resource_limit);
+ break;
+ }
case TimeResource:
{
resource_info.time-=size;
memory=PixelCacheThreshold;
#endif
(void) SetMagickResourceLimit(AreaResource,2*memory);
- (void) SetMagickResourceLimit(MemoryResource,memory);
- (void) SetMagickResourceLimit(MapResource,2*memory);
limit=GetEnvironmentValue("MAGICK_AREA_LIMIT");
if (limit != (char *) NULL)
{
(void) SetMagickResourceLimit(AreaResource,StringToSizeType(limit,100.0));
limit=DestroyString(limit);
}
+ (void) SetMagickResourceLimit(MemoryResource,memory);
limit=GetEnvironmentValue("MAGICK_MEMORY_LIMIT");
if (limit != (char *) NULL)
{
StringToSizeType(limit,100.0));
limit=DestroyString(limit);
}
+ (void) SetMagickResourceLimit(MapResource,2*memory);
limit=GetEnvironmentValue("MAGICK_MAP_LIMIT");
if (limit != (char *) NULL)
{
(void) SetMagickResourceLimit(MapResource,StringToSizeType(limit,100.0));
limit=DestroyString(limit);
}
+ (void) SetMagickResourceLimit(DiskResource,MagickResourceInfinity);
limit=GetEnvironmentValue("MAGICK_DISK_LIMIT");
if (limit != (char *) NULL)
{
100.0));
limit=DestroyString(limit);
}
+ (void) SetMagickResourceLimit(ThrottleResource,0);
+ limit=GetEnvironmentValue("MAGICK_THROTTLE_LIMIT");
+ if (limit != (char *) NULL)
+ {
+ (void) SetMagickResourceLimit(ThrottleResource,StringToSizeType(limit,
+ 100.0));
+ limit=DestroyString(limit);
+ }
+ (void) SetMagickResourceLimit(TimeResource,MagickResourceInfinity);
limit=GetEnvironmentValue("MAGICK_TIME_LIMIT");
if (limit != (char *) NULL)
{
resource_info.thread_limit=GetOpenMPMaximumThreads();
break;
}
+ case ThrottleResource:
+ {
+ resource_info.throttle_limit=limit;
+ value=GetPolicyValue("throttle");
+ if (value != (char *) NULL)
+ resource_info.throttle_limit=MagickMin(limit,StringToSizeType(value,
+ 100.0));
+ if (resource_info.throttle_limit > GetOpenMPMaximumThreads())
+ resource_info.throttle_limit=GetOpenMPMaximumThreads();
+ break;
+ }
case TimeResource:
{
resource_info.time_limit=limit;