도와주세요!!
글 수 15,339
2008.12.16 09:55:33 (*.100.85.10)
7093
얼마전에 문의드려봤던 내용 중 일부입니다.
nfs 서버에 동영상 데이터를 write하고 있습니다.
wirte한 영상을 디스플레이 하면 중간 중간 영상이 깨져 있습니다.
그래서 내부 버퍼크기 등을 조절해서 write 횟수를 좀 줄여서 테스트 해본 결과
영상 손실이 많이 사라지긴 했는데 완전히 안정화 되진 않했습니다.
간혹 커널이 죽기도하는데
커널이 죽으면서 뿌린 메세지 중에
fs/nfs/write.c 함수 파일의
static int nfs_inode_add_request(struct inode *inode, struct nfs_page *req)
에 있는
BUG_ON(error == -EEXIST);
에서 버그 메세지를 출력하네요.
버그 메세지는 다음과 같습니다.
kernel BUG at fs/nfs/write.c:380
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0524000
nfs 서버와의 응답시간 등이 발생해서 그런지 nfs 서버에 동영상 데이터를 write하는게 먼가 불안한 것 같은데
왜 이런 현상이 나타나는지를 확실히 모르겠네요.
nfs 서버에 동영상 데이터를 write하고 있습니다.
wirte한 영상을 디스플레이 하면 중간 중간 영상이 깨져 있습니다.
그래서 내부 버퍼크기 등을 조절해서 write 횟수를 좀 줄여서 테스트 해본 결과
영상 손실이 많이 사라지긴 했는데 완전히 안정화 되진 않했습니다.
간혹 커널이 죽기도하는데
커널이 죽으면서 뿌린 메세지 중에
fs/nfs/write.c 함수 파일의
static int nfs_inode_add_request(struct inode *inode, struct nfs_page *req)
에 있는
BUG_ON(error == -EEXIST);
에서 버그 메세지를 출력하네요.
버그 메세지는 다음과 같습니다.
kernel BUG at fs/nfs/write.c:380
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0524000
nfs 서버와의 응답시간 등이 발생해서 그런지 nfs 서버에 동영상 데이터를 write하는게 먼가 불안한 것 같은데
왜 이런 현상이 나타나는지를 확실히 모르겠네요.
2008.12.16 18:41:43 (*.100.85.10)
커널 버전은 2.6.21 버전입니다.
네트웍 칩은 CS8900(10base)입니다.
Wirte하는 파일의 사이즈가 커지면 커널이 죽어 버리는군요.
그래서 동영상 데이터를 하나의 파일로 저장하지 않고 일정 크기마다 별도의 파일로 저장했습니다.
약 5M 단위로 했을때 문제가 없더군요.
그리고 분할된 파일을 인코딩이 마무리된 이후에 다시 병합을 했는데
병합한 파일 사이즈가 약 30M 이상이 되니 커널이 죽어 버리네요.
nfs의 패킷 크기 및 그외의 사항에 대해서 말씀해 주신 부분을 다시 점검해 보도록 하겠습니다.
감사합니다,
네트웍 칩은 CS8900(10base)입니다.
Wirte하는 파일의 사이즈가 커지면 커널이 죽어 버리는군요.
그래서 동영상 데이터를 하나의 파일로 저장하지 않고 일정 크기마다 별도의 파일로 저장했습니다.
약 5M 단위로 했을때 문제가 없더군요.
그리고 분할된 파일을 인코딩이 마무리된 이후에 다시 병합을 했는데
병합한 파일 사이즈가 약 30M 이상이 되니 커널이 죽어 버리네요.
nfs의 패킷 크기 및 그외의 사항에 대해서 말씀해 주신 부분을 다시 점검해 보도록 하겠습니다.
감사합니다,
하지만 커널이 죽는다니 별로 좋지는 않군요
사용하시는 커널버젼이 궁금합니다.
그리고 nfs 마운트 하실때 옵션에서 패켓의 크기등을 조절하실수도 있습니다.
네트웍 칩이 어떤것인가에 따라 네트웍 속도가 좌우됩니다.
또한 네트웍 칩에서 데이타를 엑세스하는 방법도 중요한 속도 변수입니다.
예상하건데 동영상 데이타를 받아오는 디바이스상의 인터럽트 루틴에서 시간 점유가 많다는 판단이 듭니다.
네트웍 칩에 할당할 시간이 적다는 말이죠
메모리에 일정데이타만을 저장한 후 동영상 캡쳐를 멈추고 파일로 저장한후 확인해 보시기 바랍니다.
시간지연은 어플보다는 디바이스드라이버의 엑세스 형태에 좌우되는 경우가 많습니다.