mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
remove profiling
This commit is contained in:
@@ -80,15 +80,12 @@ export class HlsService extends BaseService {
|
||||
}
|
||||
|
||||
async getSegment(auth: AuthDto, assetId: string, sessionId: string, variantIndex: number, filename: string) {
|
||||
const t0 = performance.now();
|
||||
await this.requireAccess({ auth, permission: Permission.AssetView, ids: [assetId] });
|
||||
const t1 = performance.now();
|
||||
|
||||
const session = await this.videoStreamRepository.getSession(sessionId);
|
||||
if (!session) {
|
||||
throw new NotFoundException('Session not found');
|
||||
}
|
||||
const t2 = performance.now();
|
||||
|
||||
const variantDir = StorageCore.getHlsVariantFolder({ ownerId: auth.user.id, sessionId, variantIndex });
|
||||
const path = join(variantDir, filename);
|
||||
@@ -102,25 +99,11 @@ export class HlsService extends BaseService {
|
||||
this.websocketRepository.serverSend('HlsHeartbeat', { sessionId, variantIndex, segmentIndex });
|
||||
|
||||
if (await this.storageRepository.checkFileExists(path, constants.R_OK)) {
|
||||
this.logger.log(
|
||||
`[TIMING] getSegment(cached) session=${sessionId} variant=${variantIndex} file=${filename} ` +
|
||||
`auth=${(t1 - t0).toFixed(1)}ms session=${(t2 - t1).toFixed(1)}ms ` +
|
||||
`total=${(performance.now() - t0).toFixed(1)}ms`,
|
||||
);
|
||||
return response;
|
||||
}
|
||||
const t3 = performance.now();
|
||||
|
||||
this.websocketRepository.serverSend('HlsSegmentRequest', { sessionId, assetId, variantIndex, segmentIndex });
|
||||
await this.pendingSegments.wait(this.getSegmentKey({ sessionId, variantIndex, segmentIndex }));
|
||||
const t4 = performance.now();
|
||||
|
||||
this.logger.log(
|
||||
`[TIMING] getSegment(wait) session=${sessionId} variant=${variantIndex} file=${filename} ` +
|
||||
`auth=${(t1 - t0).toFixed(1)}ms session=${(t2 - t1).toFixed(1)}ms ` +
|
||||
`existsCheck=${(t3 - t2).toFixed(1)}ms wait=${(t4 - t3).toFixed(1)}ms ` +
|
||||
`total=${(t4 - t0).toFixed(1)}ms`,
|
||||
);
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
@@ -165,12 +165,9 @@ export class TranscodingService extends BaseService {
|
||||
}
|
||||
|
||||
private async startTranscode(session: Session, variantIndex: number, startSegment: number) {
|
||||
const t0 = performance.now();
|
||||
const { ffmpeg } = await this.getConfig({ withCache: true });
|
||||
const t1 = performance.now();
|
||||
|
||||
const asset = await this.videoStreamRepository.getForTranscoding(session.assetId);
|
||||
const t2 = performance.now();
|
||||
if (!asset) {
|
||||
this.logger.error(`Asset ${session.assetId} not found for HLS transcoding`);
|
||||
return;
|
||||
@@ -223,7 +220,6 @@ export class TranscodingService extends BaseService {
|
||||
await this.failSession(session, `Failed to start transcode: ${error?.message ?? 'unknown error'}`);
|
||||
return;
|
||||
}
|
||||
const t3 = performance.now();
|
||||
const args = config.getHlsCommand(
|
||||
{
|
||||
initFilename: 'init.mp4',
|
||||
@@ -241,19 +237,11 @@ export class TranscodingService extends BaseService {
|
||||
asset.videoStream,
|
||||
asset.audioStream ?? undefined,
|
||||
);
|
||||
const t4 = performance.now();
|
||||
this.logger.log(
|
||||
`Starting HLS transcode for asset ${session.assetId} variant ${variantIndex} with command: ffmpeg ${args.join(' ')}`,
|
||||
);
|
||||
const process = this.processRepository.spawn('ffmpeg', args, { stdio: ['ignore', 'ignore', 'pipe'] });
|
||||
const t5 = performance.now();
|
||||
this.attachProcessHandlers(process, session, variantIndex, t5);
|
||||
this.logger.log(
|
||||
`[TIMING] startTranscode session=${session.id} variant=${variantIndex} startSegment=${startSegment} ` +
|
||||
`getConfig=${(t1 - t0).toFixed(1)}ms getAsset=${(t2 - t1).toFixed(1)}ms ` +
|
||||
`config=${(t3 - t2).toFixed(1)}ms args=${(t4 - t3).toFixed(1)}ms ` +
|
||||
`spawn=${(t5 - t4).toFixed(1)}ms total=${(t5 - t0).toFixed(1)}ms`,
|
||||
);
|
||||
this.attachProcessHandlers(process, session, variantIndex);
|
||||
return process;
|
||||
}
|
||||
|
||||
@@ -262,9 +250,8 @@ export class TranscodingService extends BaseService {
|
||||
return this.onSessionEnd({ sessionId: session.id });
|
||||
}
|
||||
|
||||
private attachProcessHandlers(process: ChildProcess, session: Session, variantIndex: number, spawnTime: number) {
|
||||
private attachProcessHandlers(process: ChildProcess, session: Session, variantIndex: number) {
|
||||
let stderr = '';
|
||||
let firstSegmentLogged = false;
|
||||
const variantDir = StorageCore.getHlsVariantFolder({
|
||||
ownerId: session.ownerId,
|
||||
sessionId: session.id,
|
||||
@@ -284,13 +271,6 @@ export class TranscodingService extends BaseService {
|
||||
return;
|
||||
}
|
||||
const segmentIndex = Number.parseInt(match[1]);
|
||||
if (!firstSegmentLogged) {
|
||||
firstSegmentLogged = true;
|
||||
this.logger.log(
|
||||
`[TIMING] firstSegmentVisible session=${session.id} variant=${variantIndex} ` +
|
||||
`segmentIndex=${segmentIndex} sinceSpawn=${(performance.now() - spawnTime).toFixed(1)}ms`,
|
||||
);
|
||||
}
|
||||
session.lastCompletedSegment = segmentIndex;
|
||||
this.websocketRepository.serverSend('HlsSegmentResult', {
|
||||
sessionId: session.id,
|
||||
|
||||
Reference in New Issue
Block a user