Number: 2085
Title: generating a graph is pretty slow (12 sec.).
Submitter: Michael Regelin
Date: Wed Dec 8 08:09:16 2010
Subsys: Output generation
Version: 2.26.3
System: Sparc-Solaris-
Severity: minor
Problem:
I'm using Graphviz with a plugin inside Confluence (Atlassian). We have three different environnements. On two of them, it is working like a charm but on the last one (production site), it takes 12 sec to generate the code. I have double checked the files under Solaris and everything seems to be the same.

Not sure where to look for. We have only deploy these packages: Graphviz and Graphvizgd
Input:

digraph g {
graph [
rankdir = "LR"
];
node [
fontsize = "16"
shape = "ellipse"
];
edge [
];
"node0" [
label = "<f0> 0x10ba8| <f1>"
shape = "record"
];
"node1" [
label = "<f0> 0xf7fc4380| <f1> | <f2> |-1"
shape = "record"
];
"node2" [
label = "<f0> 0xf7fc44b8| | |2"
shape = "record"
];
"node3" [
label = "<f0> 3.43322790286038071e-06|44.79998779296875|0"
shape = "record"
];
"node4" [
label = "<f0> 0xf7fc4380| <f1> | <f2> |2"
shape = "record"
];
"node5" [
label = "<f0> (nil)| | |-1"
shape = "record"
];
"node6" [
label = "<f0> 0xf7fc4380| <f1> | <f2> |1"
shape = "record"
];
"node7" [
label = "<f0> 0xf7fc4380| <f1> | <f2> |2"
shape = "record"
];
"node8" [
label = "<f0> (nil)| | |-1"
shape = "record"
];
"node9" [
label = "<f0> (nil)| | |-1"
shape = "record"
];
"node10" [
label = "<f0> (nil)| <f1> | <f2> |-1"
shape = "record"
];
"node11" [
label = "<f0> (nil)| <f1> | <f2> |-1"
shape = "record"
];
"node12" [
label = "<f0> 0xf7fc43e0| | |1"
shape = "record"
];
"node0":f0 -> "node1":f0 [
id = 0
];
"node0":f1 -> "node2":f0 [
id = 1
];
"node1":f0 -> "node3":f0 [
id = 2
];
"node1":f1 -> "node4":f0 [
id = 3
];
"node1":f2 -> "node5":f0 [
id = 4
];
"node4":f0 -> "node3":f0 [
id = 5
];
"node4":f1 -> "node6":f0 [
id = 6
];
"node4":f2 -> "node10":f0 [
id = 7
];
"node6":f0 -> "node3":f0 [
id = 8
];
"node6":f1 -> "node7":f0 [
id = 9
];
"node6":f2 -> "node9":f0 [
id = 10
];
"node7":f0 -> "node3":f0 [
id = 11
];
"node7":f1 -> "node1":f0 [
id = 12
];
"node7":f2 -> "node8":f0 [
id = 13
];
"node10":f1 -> "node11":f0 [
id = 14
];
"node10":f2 -> "node12":f0 [
id = 15
];
"node11":f2 -> "node1":f0 [
id = 16
];
}
Comments:
[ellson] I know you said you checked, but something has to be different in the three environments.

Environment variables? Userid? Permissions? NFS automounts? ... ?

Are you using dot in a webserver environment? If so, what userid is running dot when in the webserver? Does that userid have sufficient permissions to access font caches?

If you run "trace dot ..." (strace? truss?) can you see roughly what its doing when it hangs for 12 seconds?

[michael] Ok thanks, I will have a look again. I'm pretty sure it's the same... Never knows....

[michael] Sorry for the delay,

I have double-checked permissions and variables. It's Ok. For the NFS automounts, i cant say, but I will ask the Solaris team.

Dot is used from a webserver. The userid has enough permissions to access font caches...

As I'm not the system admin of the Solaris server, I'm not familiar with the trace dot...... But the trace command is not found in my environement. I just found that the fc-cache service was not launch on the environement where graphviz is really slow. But I also found that it is not launched either on another server where graphviz works really fast...

Sorry but i'm stuck. Any help is welcome.

[ellson]


> As I'm not the system admin of the Solaris server, I'm not familiar with the trace dot...... But the trace command is not found in my environement.
On solaris the equivalent command is "truss"
> > I just found that the fc-cache service was not launch on the environement where graphviz is really slow. But I also found that it is not launched either on another server where graphviz works really fast...
fc-cache is not a service, its a one-time command that should be run
when fontconfig is installed, or after any font upgrade.    I needs to
be run by root to be effective for the web server.

As a related test, ry running:

time fc-list

on the two machines. See if you get a similar list of fonts in a similar amount of time.


Owner: *
Status: *